Удалить из массива все серии, длина которых равна 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 и выполняет следующие действия:
- Запрашивает у пользователя размер массива
nmax
и количество серийk
, которые нужно удалить. - Вводит элементы массива.
- Выводит исходный массив.
- Удаляет все серии, длина которых равна
k
. - Выводит массив после удаления.
- Если после удаления остались элементы, выводит сообщение
Все элементы удалены
. - Если массив пуст, выводит сообщение
Все элементы удалены
. Переменные в коде:nmax
- максимальное количество элементов в массиве.n
- текущее количество элементов в массиве.i
,j
,k
,p
,s
,q
,x
- счетчики и переменные для отслеживания серий.a
- массив, в котором хранятся элементы. Примечание: Вложенных списков в этом коде нет.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д