Удалить из массива все серии, длина которых равна K - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! прошу помочь с выполнением первого пункта задачи...Начало положено. Но не корректно выводит. Условие: Задан целочисленный массив размера N. Удалить из массива все серии, длина которых равна K. Серия - группа подряд идущих одинаковых элементов, длина серии - количество этих элементов. При удалении остальные элементы сместись вперед, а в конце дописать нули. Отсортировать отрицательные элементы исходного массива по убыванию. спасибо!

Решение задачи: «Удалить из массива все серии, длина которых равна K»

textual
Листинг программы
uses crt;
const nmax=30;
var a:array[1..nmax] of integer;
    n,i,j,k,p,s,q,x:integer;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива, целые положительные и отрицательные числа:');
for i:=1 to n do
 begin
  write('a[',i,']=');
  readln(a[i]);
 end;
clrscr;
writeln('Исходный массив:');
for i:=1 to n do
write(a[i]:4);
writeln;
write('Введите длину серий k=');
readln(k);
i:=2;
x:=0;//количество удалений
while i<=n do
if a[i]=a[i-1] then
 begin
  j:=i;s:=1;p:=i-1;
  while(j<=n) and(a[j]=a[j-1]) do
   begin
    s:=s+1;
    j:=j+1;
   end;
  if s=k then
  for j:=1 to s do
   begin
    for q:=p to n-1 do
    a[q]:=a[q+1];
    n:=n-1;
    x:=x+1;
   end
  else i:=i+s;
 end
else i:=i+1;
if n=0 then write('Все элементы удалены')
else
 begin
  writeln('Массив после сжатия:');
  for i:=1 to x do
   begin
    n:=n+1;
    a[n]:=0;
   end;
  for i:=1 to n do
  write(a[i]:3);
 end;
readln
end.

Объяснение кода листинга программы

Этот код написан на Turbo Pascal и выполняет следующие действия:

  1. Запрашивает у пользователя размер массива nmax и количество серий k, которые нужно удалить.
  2. Вводит элементы массива.
  3. Выводит исходный массив.
  4. Удаляет все серии, длина которых равна k.
  5. Выводит массив после удаления.
  6. Если после удаления остались элементы, выводит сообщение Все элементы удалены.
  7. Если массив пуст, выводит сообщение Все элементы удалены. Переменные в коде:
    • nmax - максимальное количество элементов в массиве.
    • n - текущее количество элементов в массиве.
    • i, j, k, p, s, q, x - счетчики и переменные для отслеживания серий.
    • a - массив, в котором хранятся элементы. Примечание: Вложенных списков в этом коде нет.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы