Прямоугольный массив заполнить числами из файла, начиная с четвертого числа. С помощью функции в исходном массиве сделать элементы первой строки равными максимальному элементу соответствующего столбца
Категория: Delphi/Pascal
2012-01-19 20:12:15
code: #pascal
Program PascalGuru; type arr = array[1..100,1..100] of integer; var A:arr; i,j,p,code,cislo:integer; n:integer; {кол-во СТРОК} m:integer; {кол-во СТОЛБЦОВ} x,s:string; f:text; function max_stolb(j:integer):integer; var i,max:integer; begin max:=A[1,j]; for i:=2 to n do if A[i,j]>max then max:=A[i,j]; max_stolb:=max; end; procedure write_isx; var i,j,t:integer; f:text; probel:string[7]; x:string; begin assign(f,'ISX.TXT'); rewrite(f); writeln(f,'Ishodnyi massiv:'); writeln(f); for i:=1 to n do begin if i>1 then writeln(f); for j:=1 to m do begin if (i=1) then begin if j>3 then begin write (f,A[i,j]); str(A[i,j],x); for t:=1 to 8-length(x) do write (f,' '); end else for t:=1 to 8 do write (f,' '); end else begin write (f,A[i,j]); str(A[i,j],x); for t:=1 to 8-length(x) do write (f,' '); end; end; end; {---------------------------------------------------------------------} for j:=1 to m do A[1,j]:=max_stolb(j); {--- Записываем MAX в первую строку массива} writeln(f);writeln(f);writeln(f); writeln(f,'Obrabotannyi massiv:'); writeln(f); for i:=1 to n do begin if i>1 then writeln(f); for j:=1 to m do begin if (i=1) then begin if j>3 then begin write (f,A[i,j]); str(A[i,j],x); for t:=1 to 8-length(x) do write (f,' '); end else for t:=1 to 8 do write (f,' '); end else begin write (f,A[i,j]); str(A[i,j],x); for t:=1 to 8-length(x) do write (f,' '); end; end; end; close(f); end; procedure write_update; var i,j:integer; f:text; begin assign(f,'UPDATE.TXT'); rewrite(f); for j:=1 to m do A[1,j]:=max_stolb(j); {--- Записываем MAX в первую строку массива} for i:=1 to n do begin if i>1 then writeln(f); for j:=1 to m do write (f,A[i,j],' '); end; close(f); end; {----------------------------------------------------------} begin assign(f,'DATI.TXT'); reset(f); {начало считывания массива с файла} i:=0; while (not eof(f)) do begin readln(f,s); inc(i); j:=0; repeat p:=pos(' ',s); x:=copy(s,1,p-1); if p=0 then x:=s; val(x,cislo,code); if code=0 then begin inc(j); A[i,j]:=cislo; end; delete(s,1,p); until p=0; end; {end while} n:=i; m:=j; {---конец считывания массива с файла---} write_isx(); {запись исходного массива} {write_update();} {запись изменённого массива} writeln; writeln('Fail "ISX.TXT" uspeshno zapisan...'); readln; close(f); end.
Поделиться: