Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Записная книжка

Автор: Гелла 14.02.2006 22:10

У меня такая задача:составить телефонную киигу,так чтоб выполнялись все её функци..т.е если ты вводишь фамилию то она выдает тебе телефон, и наоборот...но предварительно нужно ввести записи:т.е. фамилии и телефоны...число страниц в книге равно кол-ву букв в алфавите..я вроде как немного разобралась...но не знаю как построить программу..
Я думаю нужны три подпрограммы, первая-вводит новую запись с фамилиями и телефонами...вторая-выдает телефон по фамилии, а третья по введенному телефону находит фамилию..всё это наверное оформляется в виде процедур...подскажите мне..я не уверена, что правильно всё распределила и не знаю как это реализовать..наведите меня на умную мысль пожалста...

Автор: volvo 14.02.2006 22:17

Выбирай: http://forum.pascal.net.ru/index.php?act=Search&CODE=show&searchid=af4e495f2a13cb6cf07d9b68d7bc5198&search_in=posts&result_type=topics&highlite=%2B%E7%E0%EF%E8%F1%ED%E0%FF

Автор: Altair 14.02.2006 22:17

И что ты хочешь ? куча подобных задач решенно... да вот http://forum.pascal.net.ru/index.php?s=&showtopic=9329&view=findpost&p=61807 даже есть, что-то похожее.
Используй поиск, потом FAQ, клем там в теме записи пример записной книжки приводил.

Автор: Гелла 14.02.2006 23:08

Цитата
И что ты хочешь ?

Конкретно от Вас,Altair,я ничего не хочу...

[quote]да вот здесь даже есть, что-то похожее.
Используй поиск, потом FAQ, клем там в теме записи пример записной книжки приводил.[quote]

Я просто не знала о такой функции...спасибо за ссылку...попробую разобраться

Автор: Гелла 19.02.2006 20:43

Ничего не получается...составила только первую процедуру...как мне дальше быть?

Цитата
program zapisnaya_kniga;
uses crt;
type note=record
fam:string[16];
tel:string[8];
end;
var
list:array[1..20] of note;
book:array['A'..'Z'] of string;
procedure vvodinf(f:fam;i:integer; t:tel)
begin
for i:=1 to 20 do
writeln('vvedite familiyu');
readln(f.note);
writeln('vvedite telefon');
readln(t.note);
if i:=true then i:=i+1;
end;

Автор: klem4 19.02.2006 21:00

Не правльно ты организовала ввод данных ... я бы сделал наприер так :

uses crt;
const
max_users = 20;

type

TNode = record
name,number : string;
end;

TBook = array [1..max_users] of TNode;

procedure Input(var b : TBook; const n : byte);
var
i : byte;
begin
for i := 1 to n do
with b[i] do begin
writeln('Пользователь №', i);
write('Имя : '); readln(name);
write('Телефон : '); readln(number);
writeln;
end;
end;

var
book : TBook;
count : byte;
begin
clrscr;
write('Количество записей : '); readln(count);
Input(book, count);
readln;
end.


Мне кажется у тебя не очень с пониманием организации самой структуры записи ... по этому советую почитать материал из FAQ : http://forum.pascal.net.ru/index.php?showtopic=9198

Автор: Гелла 28.02.2006 20:45

Ребят, вот что вышло...не уверена, что правильно......осталось только главную программу....

uses crt;
type Stroka=record
fam:string[16];
tel:string[8]
end;
List=array [1..20] of Stroka;
Book=array ['A'..'Z'] of List;
var
i:char;
s1:string[16];
s2:string[8];
B:Book;
j:integer;
t:string;
procedure vvod(st1,st2:string); {vvod informatsii}
var i:integer;
begin
if B[st1[1]][20].fam[0]<>'0' then begin
writeln('..');
exit
end;
for i:=1 to 20 do
if B[st1[1]][i].fam[0]='0' then
begin
B[st1[1]][i].fam:=copy(st1,0,length(st1));
B[st1[1]][i].tel:=copy(st2,0,length(st2));
clrscr;
writeln('zapisano');
exit
end;
end;
procedure telepofam(s:string; var t:string); {vydayot telefon po familii}
var i,b:integer;
begin
b:=0;
for i:=1 to 20 do
if B[s[1]][i].fam=s then
begin t:=M1[s[1]][i].tel; b:=1 end;
if b=0 then
writeln('Такого пользователя нет');
end;
procedure OldF(s:string; var t:string); {vydayot familiu po telefonu}
var i,b:integer;
j:char;
begin
b:=0;
for j:='A' to 'Z' do
for i:=1 to 20 do
if M1[j][i].tel=s then begin
t:=M1[j][i].fam; b:=1;
end;
if b=0 then
writeln('takogo polzovatelya net');
end.


Теги !

Автор: Гелла 7.04.2006 23:11

хорошо... unsure.gif

Автор: volvo 7.04.2006 23:31

Гелла, вот объясни мне свою логику... Я ее не понимаю. Почему КТО-ТО за тебя должен твою программу откомпилировать, исправить ошибки и выложить тебе на блюдечке? А САМА ты запустить Паскаль, и нажать F9 не в состоянии? Тогда извини, вопрос: "А зачем тебе эта программа?" Ты хочешь, чтобы ЗА тебя и дальше продолжали все делать? Или будем УЧИТЬСЯ?

Так вот: запусти СВОЙ Паскаль, проверь программу на наличие ХОТЯ БЫ явных ошибок и исправь их. Сделай так, чтобы компиляция прошла до конца. А потом присоедини (именно присоедини, а не копируй) сюда результат...

А там - посмотрим.