![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
TheKnyazz |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
Чуток запутался. И не получается правильно отладить прогу. Задание такое:
Описать структуру с именем Note, содержащую поля: -фамилия, имя. -номер телефона. -дата рождения(массив из 3 чисел). Написать программу выполняющую следующие действия с помощью процедур и функций: -ввод с клавиатуры данных в файл, состоящий из элементов типа Note, записи должны быть упорядочены по датам рождения. -чтение данных из этого файла. -вывод информации о человеке, номер телефона которого введен с клавы. -Если такого нет, то вывести соотвествующее сообщение. вот мои труды(компилируется, но все кроме создания и записи в файл криво работает): uses crt; |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата вот мои труды(компилируется Неправда, в приведенном тобой виде это даже не компилируется...1) перед Else нельзя ставить точку с запятой, а у тебя она стоит; 2) Цитата {$|-} Assign (tab_file,'gogi.txt'); Ну и дальше: сортировка... Смотри, что ты делаешь: if f1.B_date.month > f2.B_date.monthа в каком виде ты вводишь месяц, можно уточнить? Если в виде номера, то непонятно зачем при определении типа Note у тебя month имеет тип String[8]? А если в виде строки (названия, в смысле), то почему ты сравниваешь таким вот образом? ведь 'январь' будет больше чем 'декабрь', а 'август' меньше чем 'май'... Уточни этот момент. Сообщение отредактировано: volvo - 29.11.2008 20:23 |
TheKnyazz |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
И правда...проспал насчет месяца. Ввожу число. Значит можно написать, integer...
на самом деле, я просто не знал в чем ошибка, и поэтому пробовал без проверки на ошибки, и запись-допись. ( я списал этот момент с учебника и думал, у меня просто компилятор туповатый). А процедура поиска правильная? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата Значит можно написать, integer... И не только в month, а и в year и в day тоже.Цитата А процедура поиска правильная? Логически не совсем понятно. То есть, я ввел номер, которого в базе нет. Мне, естественно, ничего не напечатало, ни одной фамилии. Потом у меня процедура просит "введите номер или *", и только когда я ввожу звездочку, мне печатается "таких нет"? Не поздновато?Еще один момент: я же могу (в смысле, твоя процедура позволяет это) сразу же ввести звездочку на запрос? И у тебя получается новый вариант "русской рулетки", потому что никогда не знаешь, чему будет равно Found в таком случае. И ни с того ни с сего можно получить "таких нет". Хотя это, как бы, и не ожидалось... Кроме того, назначение f_person тоже не понятно. Объяснишь? ![]() |
TheKnyazz |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
эээ, наверно, когда писал, забыл её где-то использовать)
и у меня кстати все равно с сортировкой проблемы. Почему-то он полностью игнорирует, год, а сортирует все по месяцу рождения.... В общей сложности получается, что когда мы сразу вводим * он должен оборвать цикл поиска, на сколько я понимаю, я где-то проспал написать, что в случае когда нету такого номера, Found принимает значение False. Ток я не могу понять, где. А в моем случае, Found принимает значение False, только тогда когда пользователь нажмет *, чтобы оборвать цикл. действительно поздновато... |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата А в моем случае, Found принимает значение False, только тогда когда пользователь нажмет *, чтобы оборвать цикл. действительно поздновато... Тебе достаточно просто if not found внести внутрь цикла while true do, если бы код был отформатирован правильно, ты бы сразу увидел, как это сделать:вот твой же код, только записанный немного по-другому, "лесенкой": procedure Search; А вот так исправляется проблема: procedure Search; Цитата и у меня кстати все равно с сортировкой проблемы. Почему-то он полностью игнорирует, год, а сортирует все по месяцу рождения.... Все нормально сортирует, если ты вспомнишь, что компоненты файлов нумеруются с 0, а не с 1:Procedure Sort_tab; Вот чего выдает (вводилось все вразнобой, естественно):
|
TheKnyazz |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 15 Пол: Мужской Репутация: ![]() ![]() ![]() |
Огромное спасибо, Вы очень мне помогли. Обязательно учту ценное замечание, насчет записи программы в лесенку....
Выкладываю код, может кто-нибудь столкнется с подобными вопросами, как и у меня . program Project1; Поправил вывод и ввод данных. Оставил, международный формат телефонов. Потому что у некоторых нет стационарного телефона. Еще раз огромное спасибо за помощь!) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:21 |