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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Zigfried
сообщение 26.11.2010 19:52
Сообщение #2


Новичок
*

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

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


Вот вроде исправил,а всеравно вылетает:
program lyalikov21;
{Найти телефонную сеть(первые 3 цифры номера),имеющую наибольшее число абонентов}
{$APPTYPE CONSOLE}
uses
SysUtils;
type
tPage = record
FIO: string[30];
Ul: string[20];
Dom,Kv: integer;
Tel: string[10];
Bal:single
end;
tlist=^tElem;
tElem = record
Page: tPage;
Next:tlist
end;
var
Spis:tlist;
z:tPage;
x:text;

procedure list_init(var m:tlist);
{Инициализация списка с заглавным звеном}
begin
new(m);
m^.next:=nil
end;

procedure list_read(var z:tPage);
{чтение из файла записи}
begin
readln(x,z.FIO);
readln(x,z.Ul);
readln(x,z.Dom);
readln(x,z.Kv);
readln(x,z.Tel);
readln(x,z.Bal);
if not eof(x) then readln(x)
end;

function more(z1,z2:tPage):boolean;
{Сортировка записи по имени каталога и телефону}
var
t:boolean;
begin
if z1.Tel<z2.Tel then t:=true
else
if z1.Tel=z2.Tel then
if z1.FIO<z2.FIO then t:=true
else
if z1.FIO=z2.FIO then t:=true
else t:=false
else t:=false;
more:=t
end;
procedure list_add(var m:tlist; z:tPage);
{Добавление записи в список, c учетом сортировки}
var
p,q:tlist;
begin
q:=m;
while (q^.next<>nil) and more(q^.next^.Page,z) do
q:=q^.next;
new(p);
p^.Page:=z;
p^.next:=q^.next;
q^.next:=p
end;

procedure list_create(var x:text;var m:tlist);
{Формирование списка из файла}
begin
assign(x,'input.txt');
reset(x);
list_init(m);
while not seekeof(x) do
begin
list_read(z);
list_add(m,z)
end
end;
procedure list_print(m:tlist);
{Печать списка}
begin
if m=nil then writeln('konec spiska')
else
begin
writeln(m^.Page.FIO);
writeln(m^.Page.Ul);
writeln(m^.Page.Dom);
writeln(m^.Page.Kv);
writeln(m^.Page.Tel);
writeln(m^.Page.Bal:3:2);
writeln;
list_print(m^.next)
end
end;
procedure poisk(m:tlist);
var q:tlist;
max,k,i:integer;
maxop:string[3];
begin
q:=m;
max:=0;
while q<>nil do
begin
k:=1;
while (q^.Next^.Page.Tel=q^.Page.Tel) and (q^.Next<>nil) do
begin
k:=k+1;
q:=q^.Next
end;
if k>max then
begin
max:=k;
for i:=1 to 3 do
maxop[i]:=q^.page.tel[i]
end;
q:=q^.Next
end;
dispose(q);
for i:=1 to 3 do
writeln('max operator',maxop[i]);
writeln('vstrechaetsa',max,'raz');
readln;
readln
end;
procedure del(var m:tlist);
{Удаление списка}
var
p:tlist;
begin
while m<>nil do
begin
p:=m;
m:=m^.next;
dispose(p)
end
end;

begin
{ TODO -oUser -cConsole Main : Insert code here }
list_create(x,spis);
Writeln('spisok:');
list_print(spis^.next);
poisk(spis);
close(x);
del(spis);
readln;
readln
end.


При вылете успел сфотать что выдаёт:
Exception EAccessViolation in module lyalikov21.exe at 00008CE2.
Access violation at address 00408CE2 in module 'lyalikov21.exe'. Read of address 0000003C.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
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


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

 



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