Не выводится "преобразованный массив" - Free Pascal
Формулировка задачи:
program example_kr4; type vector = array [0..100] of integer; var i, j, n: word; a: vector; begin randomize; write(‘сколько элементов в массиве?‘); readln(n); n:=n-1; for i:= 0 to n do begin a[i]:=-100 +random(200); write(a[i]:6); end; writeln; i:=0; while i<= n do if not odd(a[i]) then begin for j:=i to n-1 do a[j]:=a[j+1]; a[n]:=0;end else i:= i+1; writeln(‘преобразованный массив: ‘); for i:=0 to n do write(a[i]:6); end.
Решение задачи: «Не выводится "преобразованный массив"»
textual
Листинг программы
type vector = array [1..100] of integer;
var i, j, n: word;
a: vector;
begin
randomize;
write('сколько элементов в массиве?');
readln(n);
for i:= 1 to n do
begin
a[i]:=-100 +random(200);
write(a[i]:4);
end;
writeln;
i:=n;
while i>=1 do
if not odd(a[i]) then
begin
if i=n then a[n]:=0
else
begin
for j:=i to n-1 do a[j]:=a[j+1];
a[n]:=0;
end;
i:=i-1;
end
else i:=i-1;
writeln('преобразованный массив:');
for i:=1 to n do write(a[i]:4);
end.
Объяснение кода листинга программы
- Объявление переменных:
type vector = array [1..100] of integer;- объявление типа данных для массиваavar i, j, n: word;- объявление переменных для цикла и количества элементов массиваa: vector;- объявление массива
- Инициализация генератора случайных чисел:
randomize;
- Ввод количества элементов массива:
write('сколько элементов в массиве?');readln(n);
- Заполнение массива случайными числами:
for i:= 1 to n dobegina[i]:=-100 +random(200);write(a[i]:4);end;
- Удаление последнего элемента массива и перестановка элементов для выравнивания:
i:=n;while i>=1 dobeginif not odd(a[i]) thenbeginif i=n then a[n]:=0elsebeginfor j:=i to n-1 do a[j]:=a[j+1];a[n]:=0;end;i:=i-1;endelse i:=i-1;end;
- Вывод преобразованного массива:
writeln('преобразованный массив:');for i:=1 to n do write(a[i]:4);Примечание: данный код предполагает, что входные данные всегда корректны и не вызовут ошибок при обработке. Например, он не проверяет, является ли введенное значение дляnположительным числом.