Cho mảng hai chiều kích thước nxm với các phần tử là những số nguyên. Tìm trong mỗi dòng phần tử lớn nhất rồi đổi chỗ nó với phần tử có chỉ số dòng bằng chỉ số cột.
Chương trình sau đây giải bài toán trên:
program Diag;
var
N, i, j, max, Ind, Vsp: integer;
A: array[1..15, 1..15] of integer;
begin
write(‘Nhap N:’);
readln(N),
for i:= 1 to N do for j:= 1 to N do
begin
write(’A[‘,i,’,’,j,’]= ‘);
readln(A[i,j]);
end;
for i:=1 to N do
begin
Max:= A[i,i]; Ind:= 1;
for j:= 2 to N do
if A[i,j] > Max then begin
Max: = A [ i, j ], Ind: = j ‘n
end;
Vsp: =A[i, i] ,A[i,i]:=Max; A[i, Ind] :=Vsp;
end;
for i:= 1 to N do
begin
writeln;
for j:= 1 to N do write(A[i,j]:3);
end;
writeln
End.
Hãy sửa lại chương trình trên khi yêu cầu bài toán thay dòng bằng cột.
Trả lời (1)
-
Có thể được chia thành ba đoạn chương trình sau đây:
Đoạn thứ nhất: Hai vòng lặp for-do lồng nhau ở đầu chưong trình có nhiệm vụ nhập vào một mảng hai chiều từ bàn phím
for i:= 1 to N do for j:= 1 to N do
begin
write(‘A[‘,i, ’, ‘,j, ‘]= ’) ;
readln(A(i,j]);
end;
Đoạn thứ hai: Hai vòng lặp lồng nhau tiếp theo thực hiện việc tìm phần tử lớn nhất trên dòng thứ i hoán đổi vị trí phần tử này với phần từ vừa nằm trên dòng i vừa có chỉ số cột bằng i.
for i:= 1 to N do begin
Max:= A [ i , 1 ] ; Ind:= 1 ,
for j:= 2 to N do
if A[i,j] > Max then
begin
Max:= A[i,j]; Ind:= j;
end;
Vsp:= A[i,i]; A[i,i]:= Max; A[i,Ind]:= Vsp;
end;
Đoạn thứ ba: Hai vòng lặp lồng nhau cuối chương trình in ra mảng kết quả
for i:=1 to N do
begin
writeln;
for j:= 1 to N do write (A[i , j ] : 3 );
end;
writeln
– Khi chạy chưomg trình trên, nhập vào N= 3 thì ta có mảng hai chiều 3×3 với 9 phần tử, chẳng hạn theo thứ tự như sau:
A[1,1]=4
A[1,2]=6
A[1,3]= 8
A[2,1]=3
A[2,2]= 7
A[2,3]= 9
A[3,l]= 4
A[3,2]=9
A[3,3]= 5
Ta nhận thấy rằng, ở dòng thứ nhất, phần tử lớn nhất của dòng là A[ 1,3 J= 8, phần từ có chỉ số dòng bằng chỉ số cột là A[1,1]= 4. Bởi vậy, sau khi tráo đổi thì giá trị của A[1,1]= 8, còn A[1,3]= 4. Vì vậy, dòng thứ nhất sau khi được tráo đổi là: A[1,1]= 8, A[ 1,2]= 6, A[ 1,3]=4.
Tương tự, ở dòng thứ 2 thì phần lớn nhất của dòng là A[2,3]= 9 sẽ được tráo đổi với phần tử A[2,2]= 7. Bởi vậy, sau khi tráo đổi thì giá trị của A[2,2]= 9, còn A[2,3]= 7. Vì vậy, dòng thứ hai sau khi được tráo đổi là:
A[2,1 ]= 3, A[2,2]= 9, A[2,3]= 7.
ở dòng thứ ba sau khi được tráo đổi là: A[3,1]= 4, A[3,2]= 5, A[3,3]=9.
Khi đó, các dòng sau khi được tráo đổi sẽ như sau:
A[1,1]= 8,A[1,2]= 6, A[1,3]= 4
A[2,1]=3,A[2,2]=9,A[2,3]=7
A[3,1]=4,A[3,2]= 5, A[3,3]= 9
bởi Lê Vinh 23/11/2021Like (0) Báo cáo sai phạm
Nếu bạn hỏi, bạn chỉ thu về một câu trả lời.
Nhưng khi bạn suy nghĩ trả lời, bạn sẽ thu về gấp bội!
Lưu ý: Các trường hợp cố tình spam câu trả lời hoặc bị báo xấu trên 5 lần sẽ bị khóa tài khoản
Các câu hỏi mới
-
Cho mảng A gồm 150 phần tử:
Viết chương trình in mảng vừa nhập ra màn hình
in các số lẻ của mảng ra màn hình
đếm số lượng số nhỏ hơn 0 có trong mảng
20/11/2022 | 0 Trả lời
-
A. Nhất định phải có phần khai báo.
B. Không cần có phần khai báo.
C. Chỉ khai báo khi dùng hàm toán học.
D. Chỉ khai báo khi chương trình có sử dụng đến thư viện chương trình con nào đó.
21/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
A. PI:=3.14
B. PI:3.14
C. PI=3.14
D. PI 3.14
21/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
A. Python quy định mỗi câu lệnh nên được viết trên một dòng riêng biệt, kết thúc bằng dấu “;”.
B. Python quy định các câu lệnh nên được viết trên một dòng.
C. Python quy định các câu lệnh nên được viết trên một dòng, kết thúc bằng dấu “;”
D. Python quy định mỗi câu lệnh nên được viết trên một dòng riêng biệt.
20/11/2022 | 1 Trả lời
-
A. Tất cả các biến dùng trong chương trình đều phải đặt tên cho chương trình dịch biết để lưu trữ và xử lí.
B. Tất cả các biến dùng trong chương trình không cần phải đặt tên.
C. Python có quy định chặt chẽ phải có phần khai báo và phần thân chương trình như Pascal.
D. Python yêu cầu sử dụng dấu “;” khi kết thúc câu lệnh.
21/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
21/11/2022 | 1 Trả lời
-
A. x=5
B. x =0.2
C. x:5
D. x==5
21/11/2022 | 1 Trả lời
-
20/11/2022 | 1 Trả lời
-
a=10
print(a)
Biến a thuộc dữ liệu kiểu dữ liệu nào?
21/11/2022 | 1 Trả lời
-
b=3.5
print(b)
20/11/2022 | 1 Trả lời