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
-
nhập mảng số nguyên M phần tử (M<>0, M thuộc tập số tự nhiên) đếm số phần tử mà giá trị của nó chia hết cho 3 và 5 trong chương trình.
19/12/2022 | 0 Trả lời
-
trình bày các đặc điểm về khoá chính bảng?
24/12/2022 | 0 Trả lời
-
Viết chương trình kiểu mảng nhập 10 số in ra màn hình các số âm và số âm phải lẻ, đếm xem có bao nhiêu số lẻ
02/02/2023 | 0 Trả lời
-
Hãy viết chương trình trên Pascal, nhập vào 2 số và tính tổng 2 số đã nhập (ghi kết quả ra màn hình đồng thời ghi 2 số nhập từ bàn phím và tổng của chúng vào tệp “e:\tong2so.doc”).
05/03/2023 | 0 Trả lời
-
Lập chương trình nhập vào 2 chuỗi bất kỳ a, b(với chuỗi b là con của
chuỗi a, tức là trong chuỗi a có 1 phần giống chuỗi b). Sau đó tìm và in ra màn hình vị trí
đầu tiên tìm thấy chuỗi b trong chuỗi a.06/03/2023 | 0 Trả lời
-
Var a : array[0..50] of real
K:= 0
for i := 1 to 50 d
if a[i] > a[k] then k := i
Đoạn chương trình trên thực hiện công việc gì dưới đây?
A. Tìm phần tử nhỏ nhất trong mảng
B. Tìm phần tử lớn nhất trong mản
C. Tìm chỉ số của phần tử lớn nhất trong mả
D. Tìm chỉ số của phần tử nhỏ nhất trong mảng
14/03/2023 | 0 Trả lời
-
Viết chương trình nhập dãy số nguyên gồm 10 số đém có bao nhiêu số chia hết cho 5?
15/03/2023 | 0 Trả lời
-
Viết chương trình nhập vào 1 dãy số nguyên gồm n phân tử tính và viết ra màng hình tổng của số dương trong dãy. (nhập từ bàn phím số phần tử N và các phần tử trong dãy)
16/03/2023 | 0 Trả lời
-
"ABCS"; "?A"; "15.1"; "@THCS"
21.5; 22.6; 30.1; 62.8; 10; 3
"s"; "a"; "?"; "1.5"; "3"
15; 21; 98; 35; 22; 30
20/03/2023 | 0 Trả lời
-
viết chương trình python nhập xâu xoá tất cả các chữ số có trong xâu
23/03/2023 | 0 Trả lời
-
Một tệp văn bản có kích thước 50Kb. Bằng cách nào ta có thể truy cập trực tiếp vào byte thứ 1000 mà không cần đọc qua 999 byte đầu.
24/03/2023 | 0 Trả lời
-
viết chương trình nhập 1 số tự nhiên n từ bàn bàn phím kiểm tra xem n là số nguyên tố hay hợp số. Lưu ý nếu n-0 hoặc n-1 thì không phải là số nguyên tố cũng không phải là hợp số
30/04/2023 | 0 Trả lời
-
a, Viết các khai báo biến cần thiết.
b, Viết các thủ tục gắn tên tệp và mở tệp phù hợp.
c, Viết câu lệnh để đọc các số nguyên a từ tệp ‘DULIEU.INP’ rồi ghi các số không chia hết cho 7 và tổng của các số đó vào tệp ‘KCHIA7.TXT’.
07/05/2023 | 0 Trả lời
-
Nhập vào dãy số nguyên có 200 số. Hãy hiển thị ra màn hình những số chẵn?
08/05/2023 | 0 Trả lời
-
Viết chương trình C++ để nhập một số nguyên x và n. Tính giá trị của
t=x - 1/3!x3 + 1/5!x5 - 1/7!x7 + 1/9!x9+…+1/n!(xn).
14/07/2023 | 0 Trả lời