Помощь - Поиск - Пользователи - Календарь
Полная версия: программа
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
krasnblj

PROGRAM NORM;
{Нахождение в матрице номера вектор-строки максимальной длины}


VAR
n,m,j,i,k: INTEGER;
A: ARRAY [1..100,1..100] OF REAL;
S,Q: REAL;
B:ARRAY [1..100] OF REAL;

 PROCEDURE VVOD;
 BEGIN
 WRITELN ('Программа нахождения в матрице номера вектор-строки максимальной длины');
 WRITELN ('Введите размеры матрицы');
 REPEAT
  WRITE ('Количество столбцов = ');
  READ (n);
  IF (n<1) OR (n>100) THEN
   WRITELN ('Неверное значение');
 UNTIL (n>=1) AND (n<=100);
 REPEAT
  WRITE ('Количество строк = ');
  READ (m);
  IF (m<1) OR (m>100) THEN
   WRITELN ('Неверное значение');
 UNTIL (m>=1) AND (m<=100);
 WRITELN ('Введите элементы матрицы');
 FOR j:=1 TO m DO
  BEGIN
   FOR i:=1 TO n DO
    BEGIN
     WRITE ('ВВЕДИТЕ a[j,i] = ');
     READ (a[j,i]);
    END;
  END;
 END;

 PROCEDURE RAS;
 begin  FOR j:=1 TO m DO
  BEGIN
   S:=0;
   FOR i:=1 TO n DO
    S:=S+a[j,i];
   IF j=1 THEN
    Q:=(sqr(S));
    K:=j;
   IF (sqr(S))>Q THEN
    Q:=(sqr(S));
    k:=j;
  END;
 WRITELN ('Строка =',k);
END;
 BEGIN
 WRITELN('нахождения в матрице номера вектор-строки максимальной длины');
 VVOD;
 RAS;
 WRITELN ('вектор-строка максимальной длины');
 WRITE (B[j]:5:2,',');
 READLN;
 END.



выдаёт ошибку в выделенном месте..
и вобще,привильно ли делаю?? программу

Добавлено через 1 мин.
ай,место не выделилось,но вот оно:
Цитата
PROCEDURE RAS;
begin
FOR j:=1 TO m DO
Ozzя
А в каком месте "выделенное место"?

Добавлено через 1 мин.
Какую ошибку?
krasnblj
исправил,ошибки не стало,зато теперь при запуске ввожу количество строк,ввожу количество столбцов,ввожу элементы матрицы и тут программу выкидывает без всяких ошибок и прочего..
Client
Покажи где исправил
krasnblj
сам ненаю точно что я изменил,но писал все заново с алгорима..
получилось вот что:


PROGRAM NORM;

VAR
n,m,j,i,k: INTEGER;
A: ARRAY [1..50,1..50] OF REAL;
S,Q: REAL;
B:ARRAY [1..50] OF REAL;

 PROCEDURE VVOD;
 
 BEGIN
 WRITELN ('Программа нахождения в матрице номера вектор-строки максимальной длины');
 WRITELN ('Введите размеры матрицы');
 REPEAT
  WRITE ('Количество столбцов = ');
  READ (n);
  IF (n<1) OR (n>50) THEN
   WRITELN ('Неверное значение');
 UNTIL (n>=1) AND (n<=50);
 REPEAT
  WRITE ('Количество строк = ');
  READ (m);
  IF (m<1) OR (m>100) THEN
   WRITELN ('Неверное значение');
 UNTIL (m>=1) AND (m<=100);
 WRITELN ('Введите элементы матрицы');
 FOR j:=1 TO m DO
  BEGIN
   FOR i:=1 TO n DO
    BEGIN
     WRITE ('ВВЕДИТЕ a[j,i] = ');
     READ (a[j,i]);
    END;
  END;
 END;
 
PROCEDURE RAS;
 begin
  FOR j:=1 TO m DO
  BEGIN
   S:=0;
   FOR i:=1 TO n DO
    S:=S+a[j,i];
   IF j=1 THEN
    Q:=(sqr(S));
    K:=j;
   IF (sqr(S))>Q THEN
    Q:=(sqr(S));
    k:=j;
  END;
 WRITELN ('Строка =',k);
END;
 
BEGIN
 WRITELN('нахождения в матрице номера вектор-строки максимальной длины');
 
VVOD;
 
RAS;
 
 READLN;
 END.

krasnblj
[/code]
вобщем работающий код:
(малоли кому понадобится)

[code=pas]

Program MaxVecStr;
 Uses Crt;
   Var
      i,j,n,m,k: integer;
      P,max: real;
      ok:boolean;
      S: array[0..10] of real;
      A: array[0..10,0..10] of real;
   Begin
    WriteLN('программа нахождения в матрице');
    WriteLN('вектор-строки максимальной длины.');

{ ввод количества строк и столбцов }
    repeat
     writeln('введите количество строк');
     readln(n);
     if (n>10) or (n<0) then
       WriteLN ('неверное значение')
       else ok:=true;
    until ok=true;
   ok:=false;
    repeat
     writeln('введите количество столбцов');
     ReadLN(m);
     if (m>10) or (m<0) then
       WriteLN ('неверное значение')
       else ok:=true;
    until ok=true;

{ввод матрицы}
    for i:=1 to n do
     begin
       for j:=1 to m do
        begin
         Write('вв элем ' ,i, ',', j, '  :');
         ReadLN(A[i,j])
        end;
    end;

{обработка}

     if (n=1) then
     begin
      for j:=1 to n do
       S[j]:=A[k,j];
       Write('элементы вектор-строки максимальной длины: ');
      for j:=1 to m do
       Write(S[j],' ');
      writeln('длина максимальной вектор-строки: ',max);
      writeln('номер вектор-строки максимальной длины: ',k);
      ReadLN;
      end

else
    for i:=1 to n do
     begin
      P:=0;
       for j:=1 to m do
       P:=P+sqr(A[i,j]);
      if (sqrt(P)>=max) then
       begin
        max:=sqrt(p);
        k:=i;
       end;
     end;

{вывод результата}
      for j:=1 to m do
       S[j]:=A[k,j];
      Write('элементы вектор-строки максимальной длины: ');
      for j:=1 to m do
       Write(S[j],' ');
      writeln('длина максимальной вектор-строки: ',max);
      writeln('номер вектор-строки максимальной длины: ',k);
      ReadLN;
      end.



Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.