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 мин.
Какую ошибку?
исправил,ошибки не стало,зато теперь при запуске ввожу количество строк,ввожу количество столбцов,ввожу элементы матрицы и тут программу выкидывает без всяких ошибок и прочего..
Покажи где исправил
сам ненаю точно что я изменил,но писал все заново с алгорима..
получилось вот что:
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.
[/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.