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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2011, 12:00   #1
salwator
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 31
По умолчанию не могу понять в чём причина

Привет уважаемые программисты
Помогите понять в чём причина и исправить эту причину
Написал программу в Turbo Pascal список очереди пациентов в поликлинику к специалисту
Список пациентов я считываю с текстового файла,с этим у меня проблем нет
Проблема в том,что когда я добавляю нового пациента с клавиатуры и добавляю в общий список,у меня
в общем списке пациент,которого я добавил,выводится в этом списке,но выводится ни как все пациенты,а вот так:
Скачков1577489121554322111125489621 405.07.1108.00
т.е выводит всё слитно,а должно Скачков 15774 89121554322 1111254896214 05.07.11 08.00
И ещё помогите придумать условие сортировки:у меня сортируется список по дате,не знаю как
написать: если есть две одинаковые даты то сделать сортировку по времени приёма этих дат

type uk=^elem;
elem=record
FIO,Nom_kart,Telef,INN,Data,Time:st ring;
prev:uk;
next:uk;
end;
var head:uk;
a,i:integer;
f:text;
key:char;

procedure init;
begin
head:=nil;
end;

procedure add1(var head,cur:uk);
begin
head:=cur;
head^.next:=nil;
end;

procedure add_between(var prev,cur:uk);
begin
cur^.next:=prev^.next;
prev^.next:=cur;
end;

procedure pered(var head,cur:uk);
begin
cur^.next:=head;
head:=cur;
end;
{Добавление в список и сортирвка}
procedure sortirovka(var head:uk;FIO,Nom_kart,Telef,INN,Data ,Time:string);
var cur,p:uk;
begin
new(cur);
cur^.FIO:=FIO;
cur^.Nom_kart:=Nom_kart;
cur^.Telef:=Telef;
cur^.INN:=INN;
cur^.Data:=Data;
cur^.Time:=Time;
if head=nil then add1(head,cur)
else
if (cur^.Data<head^.Data) then pered(head,cur)
else begin
p:=head;
while (p^.next^.Data<cur^.Data) and (p^.next<>nil) do
p:=p^.next;
add_between(p,cur);
end;
end;
{Добавление новых данных вручную}
procedure dobav;
var FIO,Nom_kart,Telef,INN,Data,Time:st ring;
begin
textcolor(14);
writeln('Введите фамилию:');
readln(FIO);
writeln('Введите номер карточки:');
readln(Nom_kart);
writeln('Введите телефон:');
readln(Telef);
writeln('Введите ИНН:');
readln(INN);
writeln('Введите дату:');
readln(Data);
writeln('Введите время*:');
readln(Time);
sortirovka(head,FIO,Nom_kart,Telef, INN,Data,Time);
writeln;
textcolor(14);
writeln(' *************************');
writeln(' пациент добавен');
writeln(' *************************');
readln;
end;
{Заполнение из файла}
procedure zapol(var f:text);
var FIO,Nom_kart,Telef,INN,Data,Time,a: string;
p:uk;
begin
assign(f,'kurs.txt');
reset(f);
while not eof(f) do
begin
readln(f,a);
FIO:=copy(a,1,18);
Nom_kart:=copy(a,19,9);
Telef:=copy(a,29,14);
INN:=copy(a,42,15);
Data:=copy(a,57,12);
Time:=copy(a,69,5);
p:=p^.next;
sortirovka(head,FIO,Nom_kart,Telef, INN,Data,Time);
end;
close(f);
textcolor(11);
writeln(' **********************');
writeln(' чтение файла завершенно');
writeln(' **********************');
readln;
end;
{Вывод}
procedure vivod(head:uk);
var p:uk;
begin
p:=head;
while p<>nil do
begin
textcolor(10);
write(p^.FIO:10);
write(p^.Nom_kart:5);
write(p^.Telef:5);
write(p^.INN:5);
write(p^.Data:5);
write(p^.Time:5);
p:=p^.next;
writeln;
end;
readln;
end;
salwator вне форума Ответить с цитированием
Старый 12.06.2011, 13:32   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Код:
write(p^.FIO:10);
и похожее заменить на
Код:
write(p^.FIO:10,' ');
Сортировка по времени - просто добавь проверку на равенство/неравенство дат, если не равны - отсортировать по дате, если равны - посмотреть время и отсортировать по нему.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 12.06.2011, 14:04   #3
salwator
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 31
По умолчанию

не могу понять как условие сортировки написать
salwator вне форума Ответить с цитированием
Старый 12.06.2011, 16:33   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

если (даты не равны) то [обычная сорторовка по дате] иначе [сортировка по времени]
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 13.06.2011, 11:25   #5
salwator
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 31
По умолчанию

я написал такое условие,я его выделил,оно у меня работает только для первого случая,в остальных случаях не работает
procedure sortirovka(var head:uk;FIO,Nom_kart,Telef,INN,Data ,Time:string);
var cur,p:uk;
begin
new(cur);
cur^.FIO:=FIO;
cur^.Nom_kart:=Nom_kart;
cur^.Telef:=Telef;
cur^.INN:=INN;
cur^.Data:=Data;
cur^.Time:=Time;
if head=nil then add1(head,cur)
else
if (cur^.Data<head^.Data) then pered(head,cur)


else
if (Cur^.Data=Head^.Data) and (Cur^.Time<Head^.Time) then pered(head,cur)


else begin
p:=head;
while (p^.next^.Data<cur^.Data) and (p^.next<>nil) do
p:=p^.next;
add_between(p,cur);
end;
end;
salwator вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замедление работы скрипта в чём причина? Alkov74 Microsoft Office Word 2 12.11.2010 20:32
В чём причина зависания компьютера? Niels Компьютерное железо 8 16.09.2010 00:15
строки в СИ, не могу понять в чём ошибка( viksen_ Помощь студентам 0 25.04.2010 16:59
IBExpert, не могу понять что делаю не так! в чём проблема.... katia0017 SQL, базы данных 10 15.01.2010 18:33
Подскажите в чём причина :( Cannibal Компьютерное железо 3 16.02.2009 23:27