[паскаль] Дана матрица размерности N ** M. Положительные элементы матрицы переписать...

0 голосов
69 просмотров

[паскаль] Дана матрица размерности N на M. Положительные элементы матрицы переписать подряд в одномерный массив В Помогите плиз

написал это но не работает !!!!!

program nt;
var a: array[1..4,1..4] of integer;
b: array[1..4] of integer;
m,n,i,j,t: integer;
begin
write('vvedite kol-vo strok ');
readln(n);
write('vvedite kol-vo stolbsov ');
readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,'] =');
readln(a[i,j]);
end;
for i:=0 to n-1 do
begin
for j:=0 to m-1 do
begin a[i,j]:=Random(30)-10;
write(a[i,j],' ');
if a[i,j]>=0 then begin
Write('Massive b = ');
write(b[i],' ');
end
end.


Информатика (12 баллов) | 69 просмотров
0

for i:=0 to n-1 do begin for j:=0 to m-1 do begin a[i,j]:=Random(30)-10; вы в описании массива а сказали,что он размерами [1..4,1..4]; но из этих строк видно, что будет обращение к элементу a[0,0], что будет выходом за пределы массива

0

да и вообще тут begin-ов больше, чем end-ов

0

Еще бы ЭТО работало! Сначала Вы заполняете массив а значениями, введенными с клавиатуры. А затем перетираете их случайными числами (к тому же, сместив индексы на -1, что вызовет ошибку) и циклически пишете в массив b, постоянно перетирая имеющиеся там значения. В целом - полный бред.

Дан 1 ответ
0 голосов

Program aaa;
var
A:array[1..1000,1..1000] of longint;
B:array[1..1000000] of longint;
count,m,n,i,j:longint;
begin
count:=0;
writeln('введите размерности массива:');
readln(m,n);
writeln('введите массив построчно:');
for i:=1 to m do
for j:=1 to n do 
read(A[i,j]);
for i:=1 to m do
for j:=1 to n do 
if A[i,j]>0 then 
  begin   
   inc(count);   
   B[count]:=A[i,j] 
  end;
end.

(1.4k баллов)