Паскаль. Программа работает, но выдает не тот результат - вставляет заданное число **...

0 голосов
54 просмотров
Паскаль. Программа работает, но выдает не тот результат - вставляет заданное число на первое место и зачем-то меняет другими числами оставшиеся элементы массива. Что надо исправить?
Условие: Вставить перед первым четным элементом массива заданное число.
program vstavka;
var i,n,k,z:integer;
a:array[1..1000] of integer;
begin
assign (input,'input.txt');
assign (output,'output.txt');
reset (input);
rewrite (output);
readln(n,z);
for i:=1 to n do read (a[i]);
i:=a[1];
for i:=1 to n do
if a[i] mod 2=0 then
begin
for k:=n+1 downto k+1 do
a[i]:=a[i-1];
a[k]:=z;
n:=n+1; break;
end;
for i:=1 to n do write(a[i],' ');
close (input);
close (output);
end.

Информатика (529 баллов) | 54 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Program vstavka;
var i,n,k,z:integer;
a:array[1..1000] of integer;
begin
assign (input,'input.txt');
assign (output,'output.txt');
reset (input);
rewrite (output);
readln(n,z);
for i:=1 to n do read (a[i]);
i:=a[1]; // что это? Удаляем
for i:=1 to n do
if a[i] mod 2=0 then
begin
k:= i;
for i:=n+1 downto k+1 do
a[k]:=a[k-1]; // вместо i берем k
a[k]:=z;
break;
end;
for i:=1 to n do write(OutPut, a[i]:4);
close (input);
close (output);
end.
Теперь должно работать

(564 баллов)