Bài
5 :Một ma trận mxn số thực được chứa trong một file văn bản có tên DULIEU.INP gồm:
dòng đầu chứa hai số m, n; m dòng tiếp theo lần lượt chứa m hàng của ma trận.
Hãy viết chương trình đọc dữ liệu từ file DULIEU.INP,
cho biết các hàng của ma trận có tổng phần tử trên hàng đó lớn nhất. Kết quả ghi lên file văn bản có tên DULIEU.OUT , trong đó dòng đầu chứa giá trị lớn nhất của tổng các phần tử trên một hàng, dòng thứ hai chứa chỉ số các hàng đạt giá trị tổng lớn nhất đó (m,n<=100).
cho biết các hàng của ma trận có tổng phần tử trên hàng đó lớn nhất. Kết quả ghi lên file văn bản có tên DULIEU.OUT , trong đó dòng đầu chứa giá trị lớn nhất của tổng các phần tử trên một hàng, dòng thứ hai chứa chỉ số các hàng đạt giá trị tổng lớn nhất đó (m,n<=100).
Chẳng
hạn
DULIEU.INP
⇒ DULIEU.OUT
6
5 34
3
6 8 12 2 2 5 6
7
5 6 10 6
8
2 4 5 1
3
5 6 1 3
10
12 3 1 8
8
8 8 9 1
LProgram Vi_du_10; Var f,g: Text; S:array[1..100] of real; T: Set of byte; GTMax: real; m,n,i,j: byte; Begin assign(f,’DULIEU.INP’); reset(f); readln(f,m,n); fillchar(S,m,0); for i:= 1 to m do begin S:=0; for j:=1 to n do begin read(f,x); S[i]:=S[i]+x; end; readln(f); end; close(f); T:=[1]; GTMax:=S[1]; for i:= 2 to m do if S[i] > GtMax then begin T:=[i]; GtMax:= S[i]; end else If S[i] = GTMax then T:= T+[i]; assign(g,’DULIEU.OUT’); rewrite(g); writeln(g,GTMax:0:2); for i:=1 to 100 do if i in T then write(g,i,#32); readln; End.Chú ý:• Chương trình trên dùng mảng S để lưu tổng giá trị các phần tử trên mỗi hàng. Cụ thể,S[i] là tổng giá trị các phần tử trên hàng thứ i của ma trận đã cho.• Tập T , GTMax lần lượt là tập chứa các chỉ số các hàng và giá trị lớn nhất của các phần tử trên mỗi hàng tại thời điểm đang xét. Xuất phát ta xem hàng thứ nhất có tổnggiá trị lớn nhất. Khi xét hàng thứ i có các trường hợp sau:- S[i] > GTMax: S[i] mới là tổng lớn nhất và lúc này chỉ có hàng i đạt được giá trị này- S[i] = GTMax: có thêm hàng i đạt giá trị lớn nhất.- S[i] < GTMax: không có gì thay đổi
Không có nhận xét nào:
Đăng nhận xét