Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2021, 19:01   #1
Narvik
Пользователь
 
Регистрация: 03.03.2021
Сообщений: 21
По умолчанию Массив - После каждого элемента с заданным значением удалить один элемент, если он отличен от заданного значения.

Здравствуйте. Я вот кое что не пойму с заданием. Вот само задание: После каждого элемента с заданным значением удалить один элемент, если он отличен от заданного значения.

Пример.
Задан массив:
[1, 12, 3, 56, 34, 34, 2, 18]
Веденный элемент:
[34]
Нашли в массиве 34, сравнили с следующим элементом. Если равно оставляем как есть, иначе удаляем отличный элемент (остальные не трогаем).

Я не пойму как правильно удалить элемент.

Код:
program lb_4;
var
  i, n, k,num: integer;
  m: array [1..1000] of integer;
begin
  repeat
    writeln('Введите любое целое количество элементов от 1 до 1000');
    readln(n);
    if n < 1 then
      writeln('n не может быть меньше единицы')
    else if n > 1000 then
      writeln('n не может быть больше тысячи')
  until (n >= 1) and (n <= 1000);
    if n = 1 then begin
    writeln('В массиве не может быть один элемен, удалять будет нечего.');
    exit;
    end;
  for i := 1 to n do 
  begin
    write('Введите ', i, ' элемент: ');
    readln(m[i]);
  end;
  writeln;
  write('Укажите еще один элемент: ');
    readln(num);
  writeln('Исходный массив:');
  for i := 1 to n do 
  begin
    write(m[i], ' ');
  end;
  for i := 1 to n do
    if m[i] = m[num] then
    begin
      // код
    end;
  writeln;
  writeln('Массив после удаления:');
  for i := 1 to n do
    write(m[i], ' '); 
  writeln();
end.
Narvik вне форума Ответить с цитированием
Старый 18.04.2021, 21:15   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

удалить элемент массива это ...
сдвинуть ВСЕ (for) последующие(j:=i+1) на одно место вперед( m[j-1]:=m[j]).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.04.2021, 21:22   #3
Narvik
Пользователь
 
Регистрация: 03.03.2021
Сообщений: 21
По умолчанию

evg_m, Но у меня же там ещё вводится один элемент, что с ним то делать?
Narvik вне форума Ответить с цитированием
Старый 18.04.2021, 22:16   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Какое-то странное задание... Если второй элемент после найденного не соответствуют введённому значению - убить его. Если 2 подряд одинаковых - порядок, отдыхайте. Да, больная фантазия составителей учебных задачек удержу не знает.
Narvik, наверно - ничего с ним не делать. Это значение - не вводимый элемент массива, а просто командир ОМОН, показывает, кого гасить надо.

Последний раз редактировалось digitalis; 19.04.2021 в 09:13.
digitalis вне форума Ответить с цитированием
Старый 19.04.2021, 08:56   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Но у меня же там ещё вводится один элемент,
Цитата:
После каждого элемента с заданным значением
здесь НЕТ ввода элемента массива.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.04.2021, 03:50   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
здесь НЕТ ввода элемента массива.
А чем num не угодил? Правда, потом он используется не как значение, а как индекс. Из условия только не могу понять, что делать, если идут два подряд значения, равных заданному, нужно ли после второго пытаться удалять элемент.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.04.2021, 12:02   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Да, в учебных бессмысленных задачках зачастую главная засада - протелепать тёмные мысли и хотелки автора задачи.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать в одномерный массив все элементы заданного, стоящие после его минимального элемента IvanDormov Помощь студентам 1 14.03.2021 13:23
Удалить элемент одномерного массива следующий после максимального элемента Mercurial18 Помощь студентам 3 21.04.2019 09:36
Удалить элемент, находящийся в середине стека , если число элементов нечетное, или 2 средних элемента, если число элементов четное. Юлия1997 Помощь студентам 0 23.10.2016 22:28
Если встречается нечетный элемент, то перед ним и после него вставить новые элементы со значением 0 (C++) yurets17 Помощь студентам 2 04.03.2014 18:12
Удалить первый элемент с заданным значением. Сдвинуть массив циклически на К элементов в право GydZu Паскаль, Turbo Pascal, PascalABC.NET 10 17.05.2009 16:38