Найти ошибку в программе на паскаль авс вот : 1)дан типизированный файл, содержащий символы. скопировать элементы этого файла в квадратную матрицу размером n×n (если элементов файла недостает, заполнить оставшиеся элементы матрицы символом «точка»). заменить все столбцы на столбец с минимальной суммой кодов элементов. вот решение: type mas2=array[1..20, 1..20] of char; procedure create(var t: text; var n: byte; var a: mas2); var i, j: byte; begin write('введите размер матрицы: '); readln(n); for i: =1 to n do for j: = 1 to n do a[i, j]: = '.'; reset(t); i: =1; while not seekeof(t) and (i< =n) do begin j: =1; while not seekeof(t) and (j< =n) do begin read(t, a[i, j]); j: = j+1; end; i: =i+1 end end; procedure sum(var a: mas2); var i,j,m,n,sum,min,p,k: integer; t: char; begin min: =-maxint; for j: =1 to m do begin p: =0; min: =-maxint-1; for k: =j to m do begin sum: =0; for i: =1 to n do sum: =sum+ord(a[i,j]); if sum begin min: =sum; p: =k; end; end; for i: = 1 to n do begin t: =a[i,j]; a[i,j]: =a[i,p]; a[i,p]: =t; end; end; writeln(sum: 7,' '); end; procedure zam(var t: text; var n: byte; var a: mas2); var i, j: byte; begin for i: =1 to n do for j: = 1 to n do a[i, j]: = '1'; reset(t); i: =1; while not seekeof(t) and (i< =n) do begin j: =1; while not seekeof(t) and (j< =n) do begin read(t, a[i, j]); j: = j+1; end; i: =i+1 end end; procedure print(const n: byte; const a: mas2); var i, j: byte; begin for i: =1 to n do begin writeln; for j: =1 to n do write(a[i, j]: 5); end; writeln end; var t: text; a: mas2; n: byte; s: string; begin write('введите имя файла: '); readln(s); assign(t, s); create(t, n, a); writeln('исходная матрица: '); print(n, a); sum(a); zam(t,n,a); writeln; writeln; writeln; writeln('результирующая матрица: '); print(n, a); end.

Murua Murua    1   13.07.2019 16:20    3

Ответы
Pashitsyna Pashitsyna  20.09.2020 06:40
Var   a: array[1..20,1..20] of integer;   n,m,i,j,min,jm,x: integer; begin   randomize;   write('Введите размеры массива: ');   readln(n,m);   writeln('Исходный массив:');   for i:=1 to n do   begin     for j:=1 to m do     begin       a[i,j]:=random(19)-9;       write(a[i,j]:4);     end;     writeln;   end;   min:=0;   for i:=1 to n do min:=min+a[i,1];   writeln('Сумма элементов 1-го столбца = ',min);   jm:=1;   for j:=2 to m do   begin     x:=0;     for i:=1 to n do       x:=x+a[i,j];     writeln('Сумма элементов ',j,'-го столбца = ',x);     if x<min then     begin       min:=x;       jm:=j;     end;   end;   writeln('Минимальная сумма в ',jm,'-м столбце');   writeln('Полученный массив:');   for i:=1 to n do   begin     for j:=1 to m do     begin       if j<>jm then a[i,j]:=a[i,jm];     write(a[i,j]:4);     end;     writeln;   end;   readln; end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика