IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Список с заглавным звеном, из текстового файла получить список из записей и по нему уже сделать з
Zigfried
сообщение 17.09.2010 9:43
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 49
Пол: Мужской

Репутация: -  0  +


Структура записи:
-ФИО(40 знаков)
-Адрес:
-Улица(20 знаков)
-Номер дома
-Квартира
-Номер телефона(10 знаков)
-Баланс

Задание:Найти телефонную сеть(первые 3 цифры номера),имеющую наибольшее число абонентов.

Помогите пожалуйста с решением.Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 26.11.2010 20:28
Сообщение #2


Гость






Что-то ты перемудрил в процедуре Poisk. Смотри:

procedure poisk(m: TList);
var
q: TList;
maxOp: string[3];
k, max: integer;
begin
q := m^.next; // первый элемент - пропускаем, он заглавный...
max := 0;
while q <> nil do // а теперь идем по списку...
begin
k := 1; // считать начинаем с 1, одно-то вхождение все равно есть.

// Здесь внимательно: сначала проверим, существует ли q, потом -
// существует ли q^.next, и только потом сравниваем текущий и следующий
// элементы списка...
while (q <> nil) and (q^.next <> nil) and
(copy(q^.page.tel, 1, 3) = copy(q^.next^.page.tel, 1, 3)) do // сравнить первые 3 символа
begin
inc(k);
q := q^.next;
end;

if k > max then // тут у тебя все было правильно, только заполни maxop без цикла
begin
max := k;
maxop := copy(q^.page.tel, 1, 3);
end;

// а вот это - ключевой момент: продвигаемся дальше - только если k = 1,
// то есть, только если внутри предыдущего цикла не было увеличения q...
if k = 1 then
q := q^.next;
end;

writeln('max operator: ', maxop);
writeln('vstrechaetsa: ', max, ' raz(a)');

end;

Вот это только что прогнал на FPC - не вылетает. Учти, я гонял только до закрытия файла, дальше - тебе еще список удалять надо, ты этого так и не сделал... И не надо q^ удалять в Poisk-е. Ты ж место под него ТАМ не выделял, зачем удаляешь?
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Zigfried   Список с заглавным звеном   17.09.2010 9:43
мисс_граффити   Zigfried, с чем конкретно проблема? что пробовал, ...   17.09.2010 10:38
Zigfried   я не знаю как из текстового файла сделать список и...   17.09.2010 11:19
volvo   Для этого надо как минимум знать, что из себя пред...   17.09.2010 12:22
Zigfried   ну если не обговаривается это у меня в условии то ...   17.09.2010 12:50
volvo   Я догадки предпочитаю оставлять женщинам с картами...   17.09.2010 13:23
Zigfried   Уточнил у преподавателя данные записаны в строку ч...   1.10.2010 9:24
Lapp   Уточнил у преподавателя данные записаны в строку ...   1.10.2010 9:33
Zigfried   да   1.10.2010 10:52
Lapp   смотри, вот тебе ТВОЯ примерная структура записи, ...   1.10.2010 11:30
volvo   В таком случае, в чем проблема использовать вышепр...   1.10.2010 11:11
Zigfried   ok   1.10.2010 11:31
Zigfried   type tPage = record FIO: string[30]; Ul:...   4.10.2010 9:54
мисс_граффити   Вот что получилось(начальный этап). Выдаёт ошибку...   4.10.2010 18:06
Zigfried   а сортировка в данной задаче правильно выполнена н...   14.11.2010 13:02
Zigfried   и пожалуйста помогите с процедурой нахождения теле...   14.11.2010 13:39
Zigfried   program lyalikov21; {Найти телефонную сеть(первые ...   25.11.2010 9:55
TarasBer   Перед копированием текста из дельфы выбирай русску...   25.11.2010 10:30
мисс_граффити   ну для начала - неплохо бы добавить проверку, что ...   25.11.2010 10:51
volvo   1) у тебя список из памяти не удаляется - это дост...   25.11.2010 12:33
Zigfried   Вот вроде исправил,а всеравно вылетает: program ly...   26.11.2010 19:52
volvo   Что-то ты перемудрил в процедуре Poisk. Смотри: p...   26.11.2010 20:28
Zigfried   Спасибо большое,исправил,работает) :)   26.11.2010 20:40


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 16:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"