Консультация № 138645
30.05.2008, 12:11
0.00 руб.
0 1 1
Уважаемые эксперты, как составить программу, формирующую одномерный массив, состоящий из N целых элементов? Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями.
Заранее благодарен.

Обсуждение

давно
Профессор
401888
1232
01.06.2008, 09:40
общий
это ответ
Здравствуйте, Верещагин Михаил!
Я так понял, что "модуль которых не превышает 1." это ноль, -1 и 1.
Решение задачи в приложении.

Приложение:
uses crt;const n=15;var a:array[1..n]of integer; i,j,p:integer;beginclrscr;randomize;writeln(‘Ishodnyj massiv:‘);{формируем массив из 15 элементов, случайные числа из инт.[-4,5]}for i:=1 to n do begin a[i]:=random(10)-4; write(a[i],‘ ‘); {выводим его на экран} end;writeln;i:=2;p:=n; {начинаем со второго элемента, запоминаем размер массива}while i<=p do {пока индекс не превышает длину массива} begin if abs(a[i])<=1 then {если модуль элемента <=1, т.е a[i]=-1,0,1} begin for j:=i to p-1 do {от этого элемента до предпоследнего} begin a[j]:=a[j+1]; {сдвигаем все на 1 позицию влево(удаляем a[i])} end; p:=p-1; {уменьшаем размер массива} end else i:=i+1; {если нет, переходим к следующему элементу} end;writeln(‘Rezultat:‘);for i:=1 to p do {выводим остатки массива}write(a[i],‘ ‘);for i:=p+1 to n do {дополняем его нолями (_ это пробел)}write(‘0_‘);readlnend.
Форма ответа