Дан массив целых чисел n элементов, заполненный случайным образом числами из промежутка [-140, 140]. Удалить из него все элементы, у которых первая и вторая цифры одинаковые — Pascal(Паскаль)

program marazm2;

uses crt;

Const
    n=100;        {количество элементов}
  type
   elements= -141..141;            {какие значения могу принимать элементы}

var
a:array[0..n] of elements;        {массив}
i,x,j,y:integer;

begin
Randomize;
For i:=0 to n-1 do
a[i]:=random(140);        {заполняем массив}

i:=1;
While i<n do begin
   dec(a[i], 2*a[i]);         {делаем в нем отрицательные элементы}
   randomize;
   x:=random(4);
   inc(i,x);
   end;
   
For i:=0 to n-1 do
begin 
    write('Номер элемента ');
    write(i);
    write(': ');
    writeln(a[i]);          {Выводим массив}
end;

j:=1;
while j<=n do          {цик подсчета количества элементов, и удаления их}
begin
  For i:=0 to n-1 do
  begin
    if (abs(a[i])>10) and (abs(a[i])<100)then begin        {когда двузначное то}
       if (abs(a[i]) mod 10)=(abs(a[i]) div 10) then begin a[i]:=0;inc(y);  end;            {если цифра первого разряда равна цифре второго то удаляем элемент, поворачиваем счетчик }
        end
        else if (abs(a[i])>=100) then  begin           {иначе если имеем трехзначное число}
       if (abs(a[i]) div 100)=((abs(a[i]) div 10) mod 10) then begin a[i]:=0;inc(y);  end;         {то тогда если цифра третьего разряда  равна цифре второго то удаляем элемент, поворачиваем счетчик}
       end;
      end;
     inc(j);
 end;
writeln('Vsego bilo udaleno ',y,' elementov');         {конец, пиши количество элементов}
writeln('Ishodniy massiv');
For i:=0 to n-1 do
begin 
    write('Номер элемента ');
    write(i);
    write(': ');
    writeln(a[i]);          {Выводим массив}
end;
writeln('Press enter for exit');
readln;
end.

Leave a Comment

+ 30 = 31