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.
program Diag;
uses crt;
Var
N,i,j,Max,Ind,Vsp:integer;
A:array[1..15,1..15] of integer;
begin
clrscr;
write('nhap N nho hon 15:');
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,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;
for i:=1 to N do
begin
writeln;
for j:=1 to N do
write(a[i,j]:3);
end;
writeln
readkey;
end.
Quảng cáo
1 câu trả lời 613
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 code này có nhiệm vụ duyệt từng hàng. Ban đầu gán phần tử đầu tiên của hàng là max . Sau đó nếu trong hàng đó có phần tử nào lớn hơn max thì lưu lại giá trị max và chỉ số của phần tử đó trong hàng.
Để sửa chương trình trên để tìm kiếm trong mỗi cột thì ta sửa lại như sau:
program Diag;
uses crt;
Var
N,i,j,Max,Ind,Vsp:integer;
A:array[1..15,1..15] of integer;
begin
clrscr;
write('nhap N nho hon 15:');
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,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;
for i:=1 to N do
begin
writeln;
for j:=1 to N do
write(a[i,j]:3);
end;
writeln;
readkey;
end.
Kết quả :

Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
86064
