Помощь - Поиск - Пользователи - Календарь
Полная версия: Прога с процедурами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Старающийся
Написал прогу,не могли бы проверить.Не могу понять в чем дело,не запускается!?Очень срочно нужно!!!
Uses CRT;
const
  n = 5;
  m = 5;
type mas1=array[1..n] of real;
       mas2=array[1..n,1..m] of real;
       mas3=array[1..m] of real;

var i, j, k: integer;
a:mas1;b:mas2; c:mas3;
  T: real;
Procedure outvec (VAR C:mas3;n:integer);
VAR i:integer;
begin
for i:=1 to m do 
write(C[i]:7:2,' ');                     
writeln;
end;
Procedure Umnoz(VAR A:mas1;B:mas2;C:mas3;n,m:integer);
begin
for j:=1 to m do begin
C[j]:=0;
for k:=1 to n do
C[j]:=C[j]+A[k]*B[k,j];
end;
Begin
  clrscr;
  writeln('Vvedite massiv A [',n,']:');
  for i := 1 to n do readln(A[i]);

  for i:=1 to m do
    for j := 1 to n do
      if i < j then B[i, j] := i + j
      else B[i, j] := (i - j) / (i + 1);

  for i := 1 to m do begin
    for j := 1 to n do
      write(B[i,j]:5:2);
    writeln;
  end;

Umnoz(A,B,C,m,n);
writeln('C before sort:');
Outvec(C,m);
writeln;

for i := 1 to m do
    for j := m downto i + 1 do
      if Abs(C[j - 1]) > Abs(C[j]) then begin
        T := C[j - 1]; C[j - 1] := C[j]; C[j] := T;
      end;

writeln('C after sort');
Outvec(C,m);
writeln;
END.
Артемий
program ad;
Uses CRT;
const
  n = 5;
  m = 5;
type mas1=array[1..n] of real;
       mas2=array[1..n,1..m] of real;
       mas3=array[1..m] of real;

var i, j, k: integer;
a:mas1;b:mas2; c:mas3;
  T: real;
Procedure outvec (VAR C:mas3;n:integer);
VAR i:integer;
begin
for i:=1 to m do 
write(C[i]:7:2,' ');                     
writeln;
end;
Procedure Umnoz(VAR A:mas1;B:mas2;C:mas3;n,m:integer);
begin
for j:=1 to m do begin
C[j]:=0;
for k:=1 to n do
C[j]:=C[j]+A[k]*B[k,j];
end;
end;
Begin
  clrscr;
  writeln('Vvedite massiv A [',n,']:');
  for i := 1 to n do readln(A[i]);

  for i:=1 to m do begin
    for j := 1 to n do
      if i < j then B[i, j] := i + j
      else B[i, j] := (i - j) / (i + 1);
   end;

  for i := 1 to m do begin
    for j := 1 to n do
      write(B[i,j]:5:2);
    writeln;
  end;

Umnoz(A,B,C,m,n);
writeln('C before sort:');
Outvec(C,m);
writeln;

for i := 1 to m do begin
    for j := m downto i + 1 do
      if Abs(C[j - 1]) > Abs(C[j]) then begin
        T := C[j - 1]; C[j - 1] := C[j]; C[j] := T;
      end;
 end;

writeln('C after sort');
Outvec(C,m);
writeln;
END.

??
Tan
Procedure Umnoz(VAR A:mas1;B:mas2;C:mas3;n,m:integer);
begin
for j:=1 to m do begin
C[j]:=0;
for k:=1 to n do
C[j]:=C[j]+A[k]*B[k,j];
end;
end;

Тут ты упустил 1 end.
Старающийся
Большое спасибо!!!
Старающийся
У меня теперь другая проблема.Раньше без процедур когда писал у меня 'С before sort' и 'С after sort' нормально считались,а сейчас они просто обнуляютя!!!
volvo
Потому что Var в списке параметров работает до первой ";"

То есть, у тебя B и C из процедуры НЕ возвращаются...
Старающийся
Честно говоря не понял как быть?Поясните,пожалуйсто!
volvo
Описать Umnoz вот так:
Procedure Umnoz(VAR A:mas1;B:mas2;VAR C:mas3;n,m:integer); { <--- Чувствуешь разницу? }
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.