type slovo=array[1..9]of char;
NumberTelephone=1000000..9999999;
friend=record
surname:slovo;
num:nt;
end;
page=array[1..20] of friend;
notebook=array['A'..'Z'] of page;
Записи.Записная книжка
Код:
Считается что на каждой странице указаны фамилии, которые начинаются с одной и той же буквы - индекса этой страницы. НУжно написать логическую функцию nomer(s,kor,tn), которая определяет,есть ли в записной книжке ведомости про друга с фамилией kor. Если есть то присвоить переменной tn его номер телефона. Пыталась сделать, но потом окончательно запуталась:
Код:
program l5z4;
uses crt;
type slovo=array[1..9]of char;
nt=1000000..9999999;
friend=record
sname:slovo;
num:nt;
end;
page=array[1..20] of friend;
nbook=array['A'..'Z'] of page;
var cbuf,c:char;
b:nbook;
fr:friend;
p:page;
i,j,k,l:integer;
kor:slovo;
tn:nt;
f:text;
function nomer(s:nbook;t:slovo;var tn:nt):integer;
begin
l:=1;
for cbuf:='A' to 'Z' do
begin
if t[1]=cbuf then
c:=t[1];
end;
p:=s[c];
for i:=1 to 20 do
begin
for j:=1 to 9 do
if friend.sname[j]=kor[j] then
l:=l*1
else
l:=l*0;
end;
if l=1 then
tn:=friend.num;
nomer:=1;
end;
procedure dop(f:text;c:char);
begin
with b[c] do // знаю что так нельзя, но не в курсе как работать со сложенными один в один массивами
begin
for p:=1 to 20 do
while not eof do
begin
j:=1;
k:=1;
while not eoln do
begin
if friend.sname[j]<>':' then
begin
read(f,friend.sname[j]);
inc(j);
end
else
begin
inc(j);
read(f,friend.num[k]);
inc(k);
end;
end;
end;
end;
end;
begin
clrscr;
assign (f,'c:/tex.txt');
reset(f);
for cbuf:='A' to 'Z' do
dop(f,cbuf);
writeln('Enter surname of friend');
for i:=1 to 9 do
read(kor);
k:=nomer(b,kor);
writeln('Nomer:',tn);
readkey;
end.
uses crt;
type slovo=array[1..9]of char;
nt=1000000..9999999;
friend=record
sname:slovo;
num:nt;
end;
page=array[1..20] of friend;
nbook=array['A'..'Z'] of page;
var cbuf,c:char;
b:nbook;
fr:friend;
p:page;
i,j,k,l:integer;
kor:slovo;
tn:nt;
f:text;
function nomer(s:nbook;t:slovo;var tn:nt):integer;
begin
l:=1;
for cbuf:='A' to 'Z' do
begin
if t[1]=cbuf then
c:=t[1];
end;
p:=s[c];
for i:=1 to 20 do
begin
for j:=1 to 9 do
if friend.sname[j]=kor[j] then
l:=l*1
else
l:=l*0;
end;
if l=1 then
tn:=friend.num;
nomer:=1;
end;
procedure dop(f:text;c:char);
begin
with b[c] do // знаю что так нельзя, но не в курсе как работать со сложенными один в один массивами
begin
for p:=1 to 20 do
while not eof do
begin
j:=1;
k:=1;
while not eoln do
begin
if friend.sname[j]<>':' then
begin
read(f,friend.sname[j]);
inc(j);
end
else
begin
inc(j);
read(f,friend.num[k]);
inc(k);
end;
end;
end;
end;
end;
begin
clrscr;
assign (f,'c:/tex.txt');
reset(f);
for cbuf:='A' to 'Z' do
dop(f,cbuf);
writeln('Enter surname of friend');
for i:=1 to 9 do
read(kor);
k:=nomer(b,kor);
writeln('Nomer:',tn);
readkey;
end.
Зараннее спасибо за помощь или советы.
Код:
friendPage := s[kor[1]];
for i := 1 to 20 do
if friendPage.surname = kor then begin
tn := friendpage.num;
exit;
end;
// Что-то на случай если не найдено...
for i := 1 to 20 do
if friendPage.surname = kor then begin
tn := friendpage.num;
exit;
end;
// Что-то на случай если не найдено...