поиск заданного чосла в одномерном массиве

Алгоритмы: от сортировки пузырьком до численных методов

Модераторы: C_O_D_E, DeeJayC

Ответить
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

если Хыиуду начал разговор про массивы и способы решения различных классических задач, то я хочу тоже "внести свою лепту"

procedure findkey(key, size: integer); {переменная Size - "размер" массива}
var i: integer; {дополнительная локальная переменная}
j: integer;
begin
j:=1;
for i:=1 to size do {организуем цикл от 1 (левого) элемента до последнего(правого)}
if a=key then
begin
writeln(j: 3, a:3, i);
inc(j);
end;
end;

процедура в табличном виде выдаст все вхождения переменной key в массив.
более того в переменной j останется количетво энтих вхождений.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Oleg_Rus, как насчёт расширить задачу до "поиск заданнЫХ чисЕЛ в одномерном массиве" ? ;-)
С выводом позиций, колличества и, быть может, частоты вхождения.

В "Решите мне задачку" уже есть желающие :-)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Я бы все-таки не рекомендовал в вычислительных процедурах делать вывод на экран. Мало ли где эта процедура будет использоваться? В общем, вариант с функцией, но без вывода. Тем более не факт, что в программе массив будет называться именно а.

Код: Выделить всё

function findkey(startsearch,key:integer;a:array of integer):integer;
var i:integer;
begin
  for i:=startsearch to high(a) do
  if a[i]=key then
  begin findkey:=i; break;end;
end;
Еще надо предусмотреть вариант, когда ключа в массиве нет
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
DeeJayC
Сообщения: 497
Зарегистрирован: 17 фев 2004, 11:26
Откуда: Ленинград (который Город на Неве)
Контактная информация:

cat | grep
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)

viel spass, DeeJayC
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

ну а, не а, просто моя привычка...
а насчет расширения процедуры мысл весьма хорошая.
я вот что думаю:
1.
если загнать искомые числа в отдельный массив new и в цикле просмотра нового массива устроить вызов процедуры findkey, где key = new[k]?
2.
частота вхождения ключа в массив: число size делить на j (вот тут я не уверен, ежели что прошу меня поправить)
3.
количество: Oscar, может ты не заметил, но в процедуре переменная j выполняет роль счетчика, просто ее вынести в число выходных данных.
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Ответить