Предмет: Информатика, автор: wollor

помогите найти ошибку в программе на паскаль авс
вот задача: 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.

Ответы

Автор ответа: clinteastwood2
0
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.
Автор ответа: wollor
0
а где он?
Автор ответа: clinteastwood2
0
в ответе
Автор ответа: wollor
0
спасибо)
Автор ответа: clinteastwood2
0
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];
    writ
Автор ответа: wollor
0
спасибо))))
Похожие вопросы
Предмет: Алгебра, автор: vetoskinakarolina89