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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2014, 18:28   #1
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию Сформировать массив а[1..12], упорядоченный по возрастанию. Если он содержит заданное число, удалить его из массива

Условие: Сформировать массив а[1..12], упорядоченный по возрастанию. Методом бинарного поиска определить, содержит ли он заданное число. Если элемент найден, то удалить его из массива.
Основной код есть и поиск работает,но с удалением у меня ерунда,помогите. КодКод Pascal
Код:
Program Pr2;
   Var
       a: array[1..12] of integer;
       k: real;    l, r, m, i: integer;
BEGIN
            {формирование и вывод массива}
     for i:=1 to 12 do
          begin
               a[i]:=2*i-1; write(a[i]:4);
     end;
     writeln;
     write('Введите ключ поиска'); readln(k);
      l:=1; r:=12;    {установка начальных границ поиска}
      m:=(l+r) div 2;     {выбор серединного элемента}
                  {поиск заданного элемента}
      while (l<=r) and (k<>a[m]) do
             begin
                   if     k<a[m]    then r:=m-1    else l:=m+1;
                   m:=(l+r) div 2;
            end;
     if   k=a[m]   then writeln('Элемент найден. Его номер - ',m)  else writeln('элемент не найден');
END.

Последний раз редактировалось Stilet; 30.01.2014 в 18:34.
schibeki вне форума Ответить с цитированием
Старый 30.01.2014, 21:28   #2
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию

For i:=1 To 12-1 Do Begin
a[i]:= a[i+1];
a[k]:=0;
это не работает..........
schibeki вне форума Ответить с цитированием
Старый 30.01.2014, 21:42   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Program Pr2;
   Var
       a: array[1..12] of integer;
       k: real;    l, r, m, i,n: integer;
BEGIN
            {формирование и вывод массива}
n:=12;
     for i:=1 to n do
          begin
               a[i]:=2*i-1; write(a[i]:4);
     end;
     writeln;
     write('Введите ключ поиска'); readln(k);
      l:=1; r:=12;    {установка начальных границ поиска}
      m:=(l+r) div 2;     {выбор серединного элемента}
                  {поиск заданного элемента}
      while (l<=r) and (k<>a[m]) do
             begin
                   if     k<a[m]    then r:=m-1    else l:=m+1;
                   m:=(l+r) div 2;
            end;
     if   k=a[m]   then begin
       writeln('Элемент найден. Его номер - ',m);
       for i:=m+1 to n do a[i-1]:=a[i];
       dec(n);
 end  else writeln('элемент не найден');
 for i:=1 to n do write(a[i]:5);
END.
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2014, 21:43   #4
schibeki
Пользователь
 
Регистрация: 27.11.2013
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
Program Pr2;
   Var
       a: array[1..12] of integer;
       k: real;    l, r, m, i,n: integer;
BEGIN
            {формирование и вывод массива}
n:=12;
     for i:=1 to n do
          begin
               a[i]:=2*i-1; write(a[i]:4);
     end;
     writeln;
     write('Введите ключ поиска'); readln(k);
      l:=1; r:=12;    {установка начальных границ поиска}
      m:=(l+r) div 2;     {выбор серединного элемента}
                  {поиск заданного элемента}
      while (l<=r) and (k<>a[m]) do
             begin
                   if     k<a[m]    then r:=m-1    else l:=m+1;
                   m:=(l+r) div 2;
            end;
     if   k=a[m]   then begin
       writeln('Элемент найден. Его номер - ',m);
       for i:=m+1 to n do a[i-1]:=a[i];
       dec(n);
 end  else writeln('элемент не найден');
 for i:=1 to n do write(a[i]:5);
END.
Идея ясна?
да,спасибо
schibeki вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребята обьясните в C++ задано целое число нужно сформировать массив ПРОСТЫХ чисел не превышающее заданное Юлия- Общие вопросы C/C++ 3 11.11.2012 17:37
Соединить два массива а и b в массив с так, чтобы его элементы были упорядочены по возрастанию. Поправить код. dmitriy20104 Паскаль, Turbo Pascal, PascalABC.NET 10 08.08.2012 11:21
Двумерный массив А. Если заданное число больше первой цифры столбца, то этот столбец удаляется. Комментировать листинг на Паскаль Altana Помощь студентам 0 29.05.2012 11:30
описать процедуру которая объединяет 2 упорядоченных по возрастанию списка в один упорядоченный по возрастанию Анастасья Помощь студентам 0 28.11.2011 17:33
Из двух упорядоченных по возрастанию массивов, получить третий, упорядоченный по возрастанию.(в обычном варианте и через bufalo C# (си шарп) 4 17.10.2011 14:52