Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Нужно исправить прогу

Автор: Tapych 25.05.2007 0:59

ДАНО: A(4,4) B(4,4)
Найти в каждом массиве второй с конца элемент, оканчивающийся на 3. Сформировать одномерный массив, состоящий из четных элементов двумерного массива, расположенных после найденного элемента.



PROGRAM OOO;
USES CRT;
TYPE MATR=ARRAY[1..10,1..10] OF INTEGER;
TYPE VECT=ARRAY[1..100] OF INTEGER;
VAR A,B:MATR; A1,B1:VECT; E,F:INTEGER;
PROCEDURE WWOD2(N,M:INTEGER; VAR X:MATR; Q:STRING);
VAR I,J:INTEGER;
BEGIN
WRITELN('VVEDITE MATRITSU ',Q);
FOR I:=1 TO N DO
FOR J:=1 TO M DO
READ(X[I,J]);
END;
PROCEDURE FORM(N,M:INTEGER; X:MATR; VAR Y:VECT; VAR K:INTEGER);
VAR I,J,C,D,S:INTEGER;
BEGIN
K:=1;
S:=0;
FOR I:=N DOWNTO 1 DO BEGIN J:=M;
REPEAT
IF X[I,J] MOD 10=3 THEN
BEGIN
S:=S+1;
C:=I;
D:=J;
END;
J:=J-1;
UNTIL (J=0)OR(S=2);
END;
I:=C;
J:=D;
REPEAT
BEGIN
REPEAT
IF X[I,J] MOD 2=0 THEN BEGIN Y[K]:=X[I,J]; K:=K+1; END;
J:=J+1;
UNTIL J>=M;
END;
N:=N+1
UNTIL I>=N;
END;
PROCEDURE WIWOD(Y:VECT; K:INTEGER);
VAR I:INTEGER;
BEGIN
FOR I:=1 TO (K-1) DO WRITELN(Y[I]);
END;
BEGIN
CLRSCR;
WWOD2(4,4,A,'A');
WWOD2(4,4,B,'B');
FORM(4,4,A,A1,E);
FORM(4,4,B,B1,F);
WIWOD(A1,E);
WIWOD(B1,F);
END.


помогите прогу исправить,паскаль вылетает

Автор: мисс_граффити 25.05.2007 1:29

у меня не вылетает, а зацикливается...
вот здесь:

REPEAT
BEGIN
REPEAT
IF X[I,J] MOD 2=0 THEN BEGIN Y[K]:=X[I,J]; K:=K+1; END;
J:=J+1;
UNTIL J>=M;
END;
N:=N+1
UNTIL I>=N;

Что ты хотел сказать последним условием? I ведь не изменяется внутри цикла... а N только увеличивается.

Автор: Tapych 25.05.2007 1:37

Точно...Перепутал - вместо I стал N увеличивать... Спасибо give_rose.gif
Прогу исправил, но одномерный массив формируется неправильно... unsure.gif