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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2014, 00:59   #1
Lizoveta
Пользователь
 
Регистрация: 22.06.2013
Сообщений: 44
По умолчанию Паскаль, задача на подстроки: по заданному числу поиск контактов в записной книжке

Добрый вечер, помогите, пожалуйста, с задачей! Послезавтра олимпиада, а у меня не получаются такого рода задачи :С
Если не сложно, нужен код, чтобы разобраться с тем, как это все проще реализовывать на Паскале. Очень на это надеюсь!
Своя программа, конечно, есть, но она никак не поможет, т.к. она не дописана: у меня получилось слишком много циклов в цикле и все...дальше совсем все стало туманно.
Заранее спасибо за любую помощь
Изображения
Тип файла: jpg Снимок.jpg (47.9 Кб, 151 просмотров)
Lizoveta вне форума Ответить с цитированием
Старый 14.03.2014, 01:11   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

При первом взгляде показалось, что придется создавать все комбинации и искать их во всех контактах, но потом появилась одна идейка:
Считываете все контакты
Считываете строку-запрос
Преобразовываете каждый контакт в набор соответствующих цифр (можно подумать, как это делать наиболее эффективно; например, сделать строку с нужными цифрами и брать i-ю цифру из нее s[ord(b[i]) - 60], где s - строка с цифрами, b - строка с контактом)
Затем простым pos('запрос', 'контакт в виде цифр') > 0 определяем, нужно ли вывести соответствующий контакт или нет

PS Надеюсь не ошибся в алгоритме (что вполне вероятно в ночное время).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 14.03.2014, 11:23   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
При первом взгляде показалось, что придется создавать все комбинации и искать их во всех контактах, но потом появилась одна идейка:
Супер! Я бы тоже полез перебирать варианты (ибо в условии невольно или специально, но именно на это и намекают).
Но ваш вариант намного проще и эффективнее!
Браво!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2014, 13:03   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Как вариант :
Загоняем всё в список(для простоты реализации это будет одномерный массив с 2-мя полями : строка и указатель)
Берем первую цифирку, и бежим по списку, попутно удаляя указатели на элементы, которые нам не нужны (if a[j].s[i] не уд усл then).. и всё.. теперь о быстродействии.. О(n*100)..
Красота..

Тогда можно сделать константу побольше, но уменьшить время написания кода.. загнать всё в массив, где опять же 2 поля : строка и булевская переменная, которая говорит, нужно ли смотреть\выводить данную строку..
Poma][a вне форума Ответить с цитированием
Старый 18.03.2014, 13:36   #5
Lizoveta
Пользователь
 
Регистрация: 22.06.2013
Сообщений: 44
По умолчанию

Спасибо всем Большое
Lizoveta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Паскаль: по заданному множеству N точек построить N-угольник Dragon65 Паскаль, Turbo Pascal, PascalABC.NET 41 05.02.2014 20:29
Вычислить произведение чисел, неравных заданному числу Z Hug Помощь студентам 4 12.11.2013 23:27
Определить, какое количество цифр числа надо исправить, чтобы исправленное совпадало с обращенным к заданному числу M Krusad Паскаль, Turbo Pascal, PascalABC.NET 2 08.10.2012 12:54
Определить ближайший элемент массива к заданному числу wowan Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2011 23:21
определить день недели по заданному числу (считать в месяце 30 дней и первый день месяца понедельник dan1991 Помощь студентам 1 01.03.2009 20:59