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

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

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

> Записная книжка, помогите подправить программу
nesh
сообщение 9.12.2008 13:03
Сообщение #1


Пионер
**

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

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


Все привет!
Вот нужно написать программу Записная книжка, как можно быстрее! Условия программы:
Анкетные данные, адреса, телефоны, место работы или учебы, должность знакомых, коллег и родственников, характер знакомства, деловые качества и т.д. Автоматическое форматирование поздравления с днем рождения (по текущей дате). Упорядочение по алфавиту и по дате последней корректировки. Поиск по произвольному шаблону.
Предыдущую программу я тоже делал базой данных, так вот, надо ее подправить под записную книжку. Пожалуйста помогите!!!
Вот код программы из которой нужно сделать записную книжку:

USES CRT;
TYPE PNODE=^NODE;
NODE=RECORD
POL:ARRAY[1..10]OF STRING;
NEXT:PNODE
END;
VAR P,PEND,PF,PN: PNODE;
S: STRING;
I,J: BYTE;
F: TEXT;
PROCEDURE SHOW(P:PNODE);
BEGIN
IF P<>NIL THEN
BEGIN
WRITE('POL: ',P^.POL[1],', ');
WRITE('NR: ',P^.POL[2],', ');
WRITE('DR: ',P^.POL[3],', ');
WRITE('O: ',P^.POL[4],', ');
WRITELN('TREB: ',P^.POL[5]);
SHOW(P^.NEXT)
END
END;
FUNCTION NIN(P:PNODE):BYTE;
BEGIN
IF P=NIL THEN
NIN:=0
ELSE
NIN:=1+NIN(P^.NEXT)
END;
BEGIN
NEW(PEND);
NEW(PF);
NEW(PN);
PF:=NIL;
PEND:=NIL;
ASSIGN(F,'O:\spis.TXT');
RESET(F);
REPEAT NEW(P);
IF PF=NIL THEN
BEGIN
PF:=P;
PEND:=P
END
ELSE
BEGIN
PEND^.NEXT:=P;
PEND:=P
END;
I:=0;
READLN(F,S);
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[1]:=COPY(S,1,I-1);
J:=I;
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[2]:=COPY(S,J+1,I-J-1);
J:=I;
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[3]:=COPY(S,J+1,I-J-1);
J:=I;
REPEAT
I:=I+1
UNTIL S[I]=' ';
P^.POL[4]:=COPY(S,J+1,I-J-1);
P^.POL[5]:=COPY(S,I+1,LENGTH(S)-I)
UNTIL EOF(F);
REPEAT
CLRSCR;
WRITELN('1: +');
WRITELN('2: -');
WRITELN('3: FIND');
WRITELN('4: SHOW');
WRITELN('5: CLEAR');
WRITELN('ESC: EXIT');
CASE READKEY OF
'1':BEGIN
NEW(P);
CLRSCR;
WRITE('POL>');
READLN(P^.POL[1]);
WRITE('NR>');
READLN(P^.POL[2]);
WRITE('DR>');
READLN(P^.POL[3]);
WRITE('O>');
READLN(P^.POL[4]);
WRITE('TREB>');
READLN(P^.POL[5]);
IF PF=NIL THEN
BEGIN
PF:=P;
PEND:=P
END
ELSE
BEGIN
WRITE('N? >');
READLN(I);
IF I=1 THEN
BEGIN
P^.NEXT:=PF;
PF:=P
END
ELSE
IF I>NIN(PF) THEN
BEGIN
PEND^.NEXT:=P;
PEND:=P
END
ELSE
BEGIN
PN:=PF;
FOR J:=1 TO I-2 DO
PN:=PN^.NEXT;
P^.NEXT:=PN^.NEXT;
PN^.NEXT:=P
END
END
END;
'2':BEGIN
CLRSCR;
WRITE('N? >');
READLN(I);
IF I>NIN(PF) THEN
BEGIN
PN:=PF;
FOR J:=1 TO NIN(PF)-2 DO
PN:=PN^.NEXT;
PEND:=PN;
PEND^.NEXT:=NIL
END
ELSE
IF I=1 THEN
PF:=PF^.NEXT
ELSE
BEGIN
PN:=PF;
FOR I:=1 TO I-2 DO
PN:=PN^.NEXT;
PN^.NEXT:=PN^.NEXT^.NEXT
END
END;
'3':BEGIN
CLRSCR;
WRITE('POL?> ');
READLN(I);
WRITE('> ');
READLN(S);
PN:=PF;
REPEAT
IF PN^.POL[I]=S THEN
SHOW(PN);
PN:=PN^.NEXT
UNTIL PN=NIL;
READKEY
END;
'4':BEGIN
CLRSCR;
WRITELN('EMPTY');
GOTOXY(1,1);
SHOW(PF);
READKEY
END;
'5':PF:=NIL;
#27:HALT
END
UNTIL
FALSE
END.



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
nesh
сообщение 11.12.2008 18:43
Сообщение #2


Пионер
**

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

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


Помогите вот в этой программе:

program zap_kniga;
type TPhoneBook=record
nam: string[20];
surname: string[30];
phone: string[10];
end;
var F: file of TPhoneBook;
PhoneBook: TPhoneBook;
function Correct: boolean;
begin
writeln;
with PhoneBook do
begin
write('Enter name: ');
readln(Nam);
write('Enter surname: ');
readln(SurName);
write('Enter phone: ');
readln(Phone);
Correct:=(Nam<>'') and (SurName<>'') and (Phone<>'');
end;
end;
procedure CreateBook;
begin
assign(F,'d:\kniga.txt');
rewrite(F);
if IOresult=0 then
while Correct do
write(F, PhoneBook);
close(F);
end;
procedure Find;
var who: string[30];
found: boolean;
begin
write('What found?'); readln(who);
if who='' then exit;
found:=false;
assign(F,'d:\kniga.txt');
reset(F);
if IOresult=0 then
with PhoneBook do
while Not EOF(F) do
begin
read(F,PhoneBook);
if nam=who then
begin
writeln(Nam:30,SurName:30,Phone:10);
found:=true;
end;
end;
close(f);
if Not Found then
writeln(Who,' not found!');
end;
begin
CreateBook;
Find;
writeln(#13#10'Please press Enter');
readln;
end.


реализовать следующее: автоматическое поздровление с днем рождения (по текущей дате), упорядочение по алфавиту и по дате последней корректировки. Пожалуйста!!! smile.gif


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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