Thêm dòng, cột vào mảng hai chiều, đây là một bài không khó tuy nhiên các bạn phải hình dung được cái mảng trong đầu rồi khi thêm dòng hay cột vào thì nó bị đẩy ra như thế nào. Nắm vững các giá trị i, j, cột, dòng chúng ta mới có thể điều khiển nó như ý được. Tốt nhất bạn nên dùng Excel để mô phỏng một ma trận 3 dòng, 3 cột.
Program Chen_Dong_Cot_Vao_Mang_Hai_Chieu; Uses crt; Const Max=10; Var i,j,x,cot,dong:byte; A: Array[1..Max,1..Max] Of Integer; hoi:Char; Begin Repeat Clrscr; Writeln(' + CHEN THEM DONG, COT VAO TRONG MANG +'); Writeln('-------------------------------'); Write('- Mang co bao nhieu cot ? -: '); Readln(cot); Write('- va bao nhieu dong ? -: '); Readln(dong); Until (cot<Max)AND(dong<Max); For i:=1 To dong Do For j:=1 to cot Do Begin Write('- Phan tu A[',i,':',j,']= '); Readln(A[i,j]); End; Writeln('--MANG TRUOC KHI CHEN--'); For i:=1 To dong Do Begin For j:=1 to cot do Write(a[i,j]: 4); Writeln; End; Readln; Repeat Write('Ban muon chen them dong hay cot - Bam phim D (dong) hoac C (cot)'); Readln(hoi); hoi:=upcase(hoi); Until (hoi='D')OR(hoi='C'); Write('Nhap vi tri muon chen :'); Readln(x); If (Hoi='D')And(x>dong) then halt; {nhập sai thoát luôn, các bạn nên code thêm cho thân thiện ^^} If (Hoi='C')And(x>cot) then halt; IF hoi='D' Then Begin {Chen dong} inc(dong); For i:=dong Downto x+1 do For j:=1 to cot do A[i,j]:=A[i-1,j]; Writeln('Nhap gia tri cho dong vua them vao'); For j:=1 to cot do Begin Write('- Phan tu A[',x,':',j,']='); Readln(A[x,j]); End; End; If (Hoi='C') then Begin {Chen cot} inc(cot); For i:=cot downto x+1 do For j:=1 to dong do A[j,i]:=A[j,i-1]; Writeln('Nhap gia tri cho cot vua them vao'); For i:=1 to dong do Begin Write('- Phan tu A[',x,':',i,']='); Readln(A[i,x]); End; End; Writeln('--MANG SAU KHI CHEN--'); For i:=1 To dong Do Begin For j:=1 to cot do Write(a[i,j]: 4); Writeln; End; Readln; End.
Thử chèn cột
Thử chèn dòng
Thầy ơi, em hay sử dụng vòng lập while cho phần nhập giá trị và cả program nếu program short, vì nhập sai sẽ được nhập lại và thầy có thể sử dụng program đó nhiều lần mà không cần Run lại hoài, nhưng làm vậy thì code hơi khó tí. thầy có thể tham khảo cách của em cho các program mẫu không ạ?
Cản ơn bạn đã góp ý, tôi thì thích dùng Repeat … Until để kiểm tra giá trị nhập hơn, một số bài cũng sử dụng phương pháp đấy. Do phần lớn giáo viên EYTH là giáo viên tiểu học nên mảng Pascal chỉ là phụ thôi vì vậy những bài trong này chỉ ở mức đơn giản. Có một số bài còn chạy không đúng nhờ phản hồi của các bạn mà mới phát hiện ra đấy. Một lần nữa cảm ơn bạn, chúc bạn cuối tuần vui vẻ <3.