05.01.2009, 19:12
общий
это ответ
Здравствуйте, Жгун Дмитрий Андреевич!
Из Вашего задания я не совсем понял надо найти в каждой такой строке максимум, или в совокупности таких строк. Поэтому 2 программы. 1я ищет в каждой строке, удовлетворяющей условию, а вторая в совокупности таких строк. Я убрал лишний цикл по строкам. Он абсолютно не нужен. Так же массив размещается в памяти динамически.
Приложение:
{* Первая программа *}
program Pascal_156740;
type
TMatrixData=Integer;
PMatrix=^TMatrix;
TMatrix=array[Byte,Byte] of TMatrixData;
var
K,N,I,J,Max:Byte;
A:PMatrix;
label break;
begin
Write('Enter K,N : ');
ReadLn(K,N);
GetMem(A,K*N*SizeOf(TMatrixdata));
if A=nil then begin
WriteLn('Can''t allocate memory for A');
end else begin
for I := 0 to K - 1 do
for J := 0 to N - 1 do begin
Write('A[',I+1,',',J+1,']=');
ReadLn(A^[I,J]);
end;
WriteLn;
for I := 0 to K - 1 do begin
Max:=0;
for J := 0 to N - 1 do begin
if Odd(A^[I,J]) or (A^[I,J]<0) then goto break;
if A^[I,J]>A^[I,Max] then Max:=J;
end;
WriteLn('Str:',I+1,' Max=',A^[I,Max]);
break:
end;
end;
ReadLn;
end.
{* Вторая программа *}
program Pascal_156740_2;
type
TMatrixData=Integer;
PMatrix=^TMatrix;
TMatrix=array[Byte,Byte] of TMatrixData;
var
K,N,I,J,MaxIndex:Byte;
A:PMatrix;
Max:TMatrixData;
isFound:Boolean;
label break;
begin
Write('Enter K,N : ');
ReadLn(K,N);
GetMem(A,K*N*SizeOf(TMatrixdata));
if A=nil then begin
WriteLn('Can''t allocate memory for A');
end else begin
isFound:=false;
for I := 0 to K - 1 do
for J := 0 to N - 1 do begin
Write('A[',I+1,',',J+1,']=');
ReadLn(A^[I,J]);
end;
WriteLn;
for I := 0 to K - 1 do begin
MaxIndex:=0;
for J := 0 to N - 1 do begin
if Odd(A^[I,J]) or (A^[I,J]<0) then goto break;
if A^[I,J]>A^[I,MaxIndex] then MaxIndex:=J;
end;
if not isFound then Max:=A^[I,MaxIndex]
else if Max<A^[I,MaxIndex] then Max:=A^[I,MaxIndex];
isFound:=true;
break:
end;
if isFound then WriteLn('Max=',Max);
end;
ReadLn;
end.