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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 09:46   #1
Biohazard251
 
Регистрация: 18.12.2012
Сообщений: 4
По умолчанию Удалить из массива все элементы, равные х.

Удалить из массива все элементы, равные х.
помогите решить!
Код:
const
  n1 = 10;
var
  a: array[1..n1] of integer;
  x, n, i, j, k: integer;
begin
  write('x='); read(x);
  write('n='); read(n);
  if (n >= 1) and (n <= 10) then
  begin
    for i := 1 to n do
    begin
      write('a[', i, ']='); read(a[i]);
    end;
    for i := 1 downto n do
      if a[i] = x then
      begin
        k := i;
        for i := k to n - 1 do
          a[i] := a[i + 1];
        a[n] := 0;
        n := n - 1;
      end;
    for i := 1 to n do
      write('a[', i, ']', a[i]); read(a[i]);
  end
  else write('error');
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.12.2012 в 09:56.
Biohazard251 вне форума Ответить с цитированием
Старый 18.12.2012, 09:54   #2
Biohazard251
 
Регистрация: 18.12.2012
Сообщений: 4
По умолчанию

спасибо я уже сам решил
const
n1=10;
var
a:array[1..n1]of integer;
x,n,i,j,k:integer;
begin
write('x='); read(x);
write('n='); read(n);
if (n>=1) and (n<=10) then
begin
for i:=1 to n do
begin
write('a[',i,']='); read(a[i]);
end;
for i:=n downto 1 do
if a[i]=x then
begin
k:=i;
for k:=i to n-1 do
a[k]:=a[k+1];
a[n]:=0;
n:=n-1;
end;
for i:=1 to n do
writeln('a[',i,']',a[i]);
end
else write('error');
end.
Biohazard251 вне форума Ответить с цитированием
Старый 18.12.2012, 09:55   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Код:
for i:=1 downto n do
Ошибка, цикл не пойдет, так как n>=1 изначально.

Цитата:
Код:
for i:=k to n-1 do
У Вас уже есть один цикл по i, вложенный цикл нужно делать с другим счетчиком
(убрать k:=i и переставить в цикле i и k местами, а так же внутри этого цикла поменять i на k).

Цитата:
Код:
n:=n-1;
А вот этого в цикле k:=i to n do делать не стоит, иначе N будет декрементироваться на каждой итерации. Вынесите за цикл, но в пределах условия if ... then
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 18.12.2012, 09:57   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
спасибо я уже сам решил
Да пожалуйста, молодец! Но последний пункт про n:=n-1 советую все же сделать...
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 18.12.2012, 10:12   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так попробуйте:
Код:
    for i := n downto 1 do
      if a[i] = x then
      begin
        for k := i to n-1 do
          a[k] := a[k + 1];
        n := n - 1;
      end;
    for i := 1 to n do
      write('a[', i, ']=',a[i]:2,' '); 
    WriteLn
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить из массива все элементы, последняя цифра которых нечетная и сжать массив Proskurina Помощь студентам 4 21.09.2012 23:02
Удалить из массива все элементы встречающиеся более двух раз. dimok5 Помощь студентам 0 15.03.2012 16:28
Удалить столбцы содержащие элементы равные 0 на Visual Basic .NET Monqer Помощь студентам 0 13.02.2012 21:27
дан целочисленный массив N. Удалить из массива все элементы,встречающиеся [менее двух раз]1 Zevsnet Паскаль, Turbo Pascal, PascalABC.NET 6 16.01.2011 18:01
Удалить из вещественного массива все элементы, отличающиеся от его максимального элемента не более чем на bingooo Помощь студентам 6 05.04.2010 18:42