uses crt;
type
slovo=packed array[1..9]of char;
telefon=1000000..9999999;
person=record
family:slovo;
number:telefon;
end;
page=array[1..20]of person;
bloknot=array['A'..'Z']of page;
function Number(z:bloknot;f:slovo;var n:telefon;k:byte):boolean;
{Функция описана в задании немного неточно.
На странице не обязательно ровно 20 записей, может быть меньше и даже 0, при тестировании я ноль и вводил на большинстве страниц, иначе очеень долго вводить данные.
Ввел параметр k-количество записей на странице
var i:char;
j:byte;
begin
Number:=false;{считаем что фамилии нет}
for i:='A' to 'Z' do{идем по страницам блокнота}
for j:=1 to k do{идем по нужной странице до количества записей на ней}
if z[i][j].family=f then{если нашли нужную фамилию}
begin
Number:=true;{меняем флаг логической функции}
n:=z[i][j].number;{запоминаем номер телефона}
break;{дальше не ищем}
end;
end;
var zap:bloknot;{сам блокнот}
fm:slovo;{искомая фамилия}
b:boolean;{переменная логического типа}
i,c:char;{счетчики циклов по символам}
j,k:integer;{счетчики циклов по номерам}
a:array['A'..'Z'] of byte;{массив количеств записей на каждой странице}
begin
clrscr;
writeln('Vvedite dannye:');
for i:='A' to 'Z' do{перебираем все страницы}
begin
writeln('Zapishite familii na bukvu ',i);{на каждой странице фамилии на одну букву}
write('Kolichestvo familij=');
readln(a[i]);{запоминаем сколько фамилий на каждой странице}
writeln('CVvedite dannye, okonchanie Esc:');
for j:=1 to a[i] do
begin
writeln(' Telefon ',j);
repeat
write(' Family: ');
k:=1;
while k<9 do{фамилия из 9 букв}
begin
read(fm[k]);
k:=k+1;
end;
readln;
until fm[1]=i;{если первая буква неверно, повторять}
zap[i][a[i]].family:=fm;{запоминаем фамилию}
write(' Nomer telefona: ');
repeat
readln(zap[i][a[i]].number);{запоминаем номер телефона}
until (zap[i][a[i]].number>99999)and(zap[i][a[i]].number<10000000);
end;
end;
clrscr;{очищаем экран от ввода}
writeln('Vvedite familiyu dlya poiska:');
for j:=1 to 9 do
read(fm[j]);{вводим фамилию для поска}
readln;
for j:=1 to a[fm[1]] do{смотрим страницу с первой буквой фамилии}
Number(zap,fm,k,b);
if not b then{если не false}
write('Nomer telefona ',zap[fm[1]][j].number){выводим телефон}
else write('Takoj familii net!');{иначе нет такого}
readln
end.
Похожие записи/страницы:
- Проверить, есть ли в заданной целочисленной последовательности a1 , a2 , ..., aN элементы, равные нулю. Если…
- Составьте алгоритм и программу чтения из файла записей. Объявите тип запись «Соревнования», состоящую из…
- Найти произведение цифр заданного целого четырехзначного числа - Pascal(Паскаль)
- Найти произведение цифр заданного целого четырехзначного числа - Pascal(Паскаль)
- Определить количество слов в заданном тексте - Pascal(Паскаль)
- Найти произведение цифр заданного четырехзначного числа - Pascal(Паскаль)
- Дано двузначное число.Определить является ли сумма его цифр двузначным числом - Pascal(Паскаль)
- В файл заносится неупорядоченный список абонентов телефонной сети в формате: фамилия, имя, отчество, адрес,…