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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2010, 20:34   #1
kate-27
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 24
По умолчанию паскаль.обработка одномерных массивов.2 ур

Заданы целочисленный массив а1, а2,..., аn, упорядоченный по возрастанию(а1<a2<...<an) и целочисленная переменная q. Переменной k присвоить номер элемента массива А, равного q, или 0, если такого элемента нет. Использовать следующий алгоритм поиска: сравнить q со средним элементом массива( или элементом около середины); если эти числа равны, то поиск завершен, если же q меньше значения среднего элемента, то поиск теперь надо вести в левой половине массива, а иначе-в правой половине; к выбранной половине применить тот же алгоритм.
в консоле
kate-27 вне форума Ответить с цитированием
Старый 06.04.2010, 10:13   #2
sllh_111
Форумчанин
 
Регистрация: 10.02.2010
Сообщений: 137
По умолчанию

наработки есть?
да и ещё, если можно опишите программу в двух словах(ну всмысли покороче, только то что нужно, без пояснений)
sllh_111 вне форума Ответить с цитированием
Старый 06.04.2010, 10:21   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Kate-27, не надо плодить тем, пиши на мыло, сделаю в кратчайшие сроки, есть готовый алгоритм этого бинарного поиска

моераторы сорри
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]

Последний раз редактировалось RUSt88; 06.04.2010 в 10:28.
RUSt88 вне форума Ответить с цитированием
Старый 06.04.2010, 10:50   #4
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

алгоритм быстрого поиска. Реализован в демонстрационных примерах Турбо паскаля
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 06.04.2010, 14:18   #5
Gray_Jagger
Пользователь
 
Аватар для Gray_Jagger
 
Регистрация: 04.04.2010
Сообщений: 29
По умолчанию

Код:
readln(q);

  if a[n div 2]=q then q:=n div 2 else begin
    for i:=1 to n div 2 do if a[i]=q then q:=i else begin
	for i:=n div 2 to n do if a[i]=q then q:=i else q:=0;
      end;
       end;
держи, но можно проще:

Код:
readln(q);
for i:=1 to n do
 begin
 if a[i]=q then q:=i else q:=0;
 end;
Пока будущее туманно, оно в твоих руках.
Gray_Jagger вне форума Ответить с цитированием
Старый 07.04.2010, 20:57   #6
kate-27
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 24
По умолчанию

нет у меня никаких наработок..что вы хотите от моих блондинистых мозговкто-нить плиз просто напишите правильную программку(полностью)
kate-27 вне форума Ответить с цитированием
Старый 07.04.2010, 21:01   #7
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Код:
uses crt;
var a:array[1..100] of integer;
    q,i,j,k,n:integer;
begin
  readln(n);
  for i := 1 to n  do
    readln(a[i]);
  readln(q);
  i := 1;
  j := n;
  while i <= j do begin
    q := i + (j - i) div 2;
    if q > A[k] then
      i := k + 1
    else if q < A[k] then
        j := k - 1
          else
            break;
  end;
  if a[k]<>q then k:=0;
  writeln(k);
  readkey;
end.

Последний раз редактировалось Google2010; 07.04.2010 в 21:09.
Google2010 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Обработка одномерных массивов. popozoglo Помощь студентам 2 11.02.2010 22:49
Обработка одномерных массивов на Си/Си++ aka_Kiss Помощь студентам 1 23.11.2009 21:51
обработка одномерных массивов felmor Помощь студентам 16 05.02.2009 19:22