|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.06.2011, 12:00 | #1 |
Пользователь
Регистрация: 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; |
12.06.2011, 13:32 | #2 |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
Код:
Код:
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
12.06.2011, 14:04 | #3 |
Пользователь
Регистрация: 21.12.2010
Сообщений: 31
|
не могу понять как условие сортировки написать
|
12.06.2011, 16:33 | #4 |
Lawful Evil
Участник клуба
Регистрация: 13.05.2008
Сообщений: 1,208
|
если (даты не равны) то [обычная сорторовка по дате] иначе [сортировка по времени]
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c) |
13.06.2011, 11:25 | #5 |
Пользователь
Регистрация: 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; |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Замедление работы скрипта в чём причина? | 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 |