Viết chương trình nhập mảng gồm n (n<=100) phần tử rồi chèn vào một số bất kỳ vào một vị trí nào đó trong mảng, số cần chèn và vị trí chèn nhập từ bàn phím.
Program Chen; Uses crt; Var i,spt, so,vitri: Integer; A: Array[1..100] Of Integer; Begin Clrscr; Writeln(' + CHEN MOT SO VAO MANG +'); Writeln('-------------------------------'); Write('-Co bao nhieu phan tu-: '); Readln(spt); For i:=1 To spt Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; Writeln; Writeln('--MANG TRUOC KHI CHEN--'); For i:=1 To spt Do Write(a[i]: 6); Writeln; Write('-Can che so: '); Readln(so); Write('-Vao vi tri: '); Readln(vitri); For i:=spt+1 Downto Vitri+1 Do Writeln; a[i]:=a[i-1]; a[vitri]:=so; spt:=spt+ 1; Writeln('MANG SAU KHI CHEN'); Readln; For i:=1 To spt Do Write(a[i]: 6); End.
Viết chương trình nhập mảng gồm n (n<=100)phần tử rồi xóa đi một phần tử nào đó có vị trí nhập từ bàn phím
Program Xoa_Pt; Var i,spt,vitri: Integer; a: Array[1..100] Of Integer; Begin Writeln('--XOA PHAN TU TRONG MANG--'); Writeln('------------------------------------------------------'); Writeln; Write('-Mang co bo nhieu phan tu- '); Readln(spt); For i:=1 To spt Do Begin Write('-Phan tu A[',i: 2,']= '); Readln(A[i]); End; Writeln; Writeln(' --MANG TRUOC KHI XOA--'); Writeln('--------------------------------------------------------'); Writeln; For i:=1 To spt Do Write(a[i]: 6); Writeln; Writeln; Write('-Vi tri muon xoa: '); Readln(vitri); For i:=vitri to spt - 1 Do a[i]:=a[i+1]; spt:=spt - 1; Writeln; Writeln(' MANG SAU KHI XOA'); Writeln('- -----------------------------------'); Writeln; For i:=1 to spt Do Write(a[i]: 6); Writeln; Writeln; Writeln(' Bam phim de ket thuc '); Readln End.
Viết chương trình nhập mảng gồm n (n<=100)phần tử rồi xóa đi những phần tử trùng nhau trong mảng và in ra màn hình phần tử sau khi đã bỏ bớt.
Program Bo_so_trung; Uses crt; Const Max=100; Var A: Array[1..Max] Of Integer; i,j,k,n: Integer; Begin Writeln('XOA BO CAC SO TRUNG NHAU'); Writeln('-----------------------------------------------'); Writeln; Write('-Nhap so phan tu mang: '); Readln(n); For i:=1 To N Do Begin Write('-Phan tu A[',i,']= '); Readln(a[i]); End; i:=2; While i <= N Do Begin j:=1; While a[j] <> a[i] Do j:=j+1; If j < i Then Begin For k:=i to n-1 Do a[k]:=a[k+1]; n:=n-1; End Else i:=i+1; End; Writeln; Write('-Mang con lai: '); For i:=1 to n Do Write(a[i]: 8); Writeln; Writeln(' Bam phim de ket thuc '); Readln End.
Thầy có thể gợi ý cho em muốn xóa phần tử đầu tiên hoặc cuối cung cũng như thêm phần tử vào đầu hoặc cuối danh sách dc không ạ?
Khi thêm một phần tử nào đó thì các phần tử ở sau nó phải lùi lại 1 vị trí ví dụ ta có dãy 1 2 3 bây giờ muốn thêm số 0 vào đầu thì phải mang a[3] là số 3 về a[4] rồi a[2] về vị trí 3 … cuối cùng mới gán a[1]:=0 vào, thêm thì làm ngược lại. Thêm xay xóa phần tử ở cuối thì đơn giản là chỉ cần thay đổi giá trị của n phần tử ví dụ mảng 5 phần tử nếu xóa phần tử cuối thì chỉ cần thay đổi… Read more »
Em cảm ơn ạ
Thầy ơi cái code chèn nó bị lỗi ra số 0 phía sau
Dòng 20 chưa đúng bạn bỏ Writeln đi là đc 🙂
Chương trình này vẫn chưa hoàn thiện, ví dụ bạn nhập mảng có 3 pt nhưng khi hỏi chèn vào đâu nhập vào số 5 vẫn đc và nó chạy tầm bậy 😀
A[i]: 6 là gì v Thầy ở dòng 19 ấy ạ
:6 có nghĩa là số đó chiếm 6 cột trên màn hình, ngoài ra còn cách khác ví dụ :5:2 nghĩa là số viết ra màn hình chiếm 5 cột trong đó dành cho phần thập phân 2 cột. Ví dụ 3.142567 viết ra sẽ là 3.14
em cảm ơn ạ
Thầy onl đến mấy giờ v ạ?
Không cố định thời gian, nếu bạn muốn hỏi gì thì hỏi trực tiếp trên fanpage có nhiều thầy cô khác sẽ giúp đỡ bạn, quản trị website thì chỉ có vài người mà lại không online thường xuyên.
em thắc mắc a[i]:=a[i+1] là khi xóa, a[i]:=a[i-1] là khi thêm. Em thắc mắc tại sao phải như vậy ạ.
Vòng for đếm lùi nên nó như vậy, bạn có thể viết ra một mảng khoảng 10 phần tử rồi thao tác bằng tay sẽ hiểu ngay. Việc thực hiện lệnh gắn là lúc nó di chuyển các phân tử.
em cảm ơn ạ, đã hiểu r ạ!
Thưa thầy, câu lệnh dòng 20,21 vẫn chưa hiểu lắm thầy ạ, trong phần xóa phần tử ấy thây, thầy có thể giảng giúp em không ạ
Chào bạn tạm thời bạn có thể hình dung như thế này, nó lấy một phần tử trong mảng rồi đi so sánh với các phần tử khác(while dòng 20) nếu thấy một phần tử nào giống với nó (trùng) dòng 22, thì ngay tại vị trí đó nó sẽ kéo các phần tử ở phía sau đè vào chỗ trùng.
xin lỗi thầy cho em hỏi khai báo mảng trực tiếp và gián tiếp có gì khác ạ, và ứng dụng thế nào để lập trình hiệu quả và tối ưu nhất ạ
Chào bạn 2 cách khai bao nó không khác gì nhau cả, tuy nhiên trong các chương trình lớn thì ta nên sử dụng kiểu khai báo trung gian để sau này chỉnh sửa thì chỉ cần chỉnh sửa ở phần đầu là được. Về phần câu hỏi sau thì chỉ có thời gian và code nhiều bạn mới nhận ra thế nào là tối ưu thôi, bạn cũng nên xem qua các sách viết về giải thuật để biết thêm các cách giải quyết vấn đề bằng nhiều cách. Cái gọi là tối ưu nó thay đổi qua thời… Read more »
cảm ơn thầy ạ
thầy bị thiếu readln của cái chèn số đấy ạ
lý do là nó không hiện thị đủ code, chúng tôi sẽ sửa lại cho hoàn thiện, cám ơn bạn rất nhiều. 😘
thật đấy ạ
🙂 nếu như cái readln ở cuối thì không cần cũng được, nếu có thì nó dừng lại để cho mình xem kết quả rồi khi bấm enter thì nó mới kết thúc. Dù sao thì cũng nên có readln trước en. để tiện xem kết quả, một lần nữa cám ơn bạn nhé .
You are intelligent !
Tại sao lại có a[k] vậy ạ??
Tại sao có a[k] v thầy???
Chỗ đó nó xử lý trong mảng có số trùng nhau
th ơi giải giúp e bài này ạ ; viết chương trình nhập vào 1 dãy số nguyên gồm n phần tử và một số nguyên k , yêu cầu chèn số tự nhiên k vào vị trí bất kì của dãy số và in dãy mới ra màn hình , vị trí cần chèn là một số tự nhiên nhập từ bàn phím
Yêu cầu của bạn đã có bài giải tương tự ở trên rồi mà?
Thầy ơi cho e hỏi, muốn chèn thêm hàng hoặc cột vào mảng 2 chiều như thế nào ạ, mảng ma trận m*n
Bạn tham khảo ở đây