Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгор_ТХТК_пособие.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.6 Mб
Скачать

I,j,kdv,k2 : Integer;

Begin

Writeln(’Введите имя набора данных’);

Readln(FilName);

Assign(Vedom,FilName);

Reset (Vedom); {открытие файла, 1-я запись - в буфере}

kdv := 0;

I := 0;

Writeln(’Список фамилий и номеров зачеток неуспевающих студентов’);

While Not Eof(Vedom) Do

Begin

K2 := 0;

Read(Vedom,A);

I := i+1;

With A Do

Begin

For j := 1 To M Do

If Otm[j] < 3 Then

K2 := K2+1;

If K2 > 0 Then

Begin

kdv := kdv+1;

Writeln(Fam:15,Numz:8);

End;

End;{Whith}

End;{While}

Writeln(’Проверено ’,i,’ студентов.’);

Writeln(’Из них неуспевающих ’,kdv,’ человек’);

WriteLn(’Нажмите Enter’);

Readln;

End.

Пимер 9.8 Выполнить поиск номера телефона и его владельца по справочнику, сформированному в предыдущем примере. При работе программы должен вводиться номер телефона, и если он есть в справочнике, то на экран должны выдаваться фамилия и адрес его владельца. Если набран неправильный номер, которого в справочнике нет, то необходимо вывести сообщение об этом. Программа будет иметь вид

Program PskTel;

Type

Tel=Record

Nom : Integer;

Fam,Adr : String[15];

End;

Var

Ftel : File Of Tel;

Rtel : Tel;

Num : Integer;

S : Char;

Begin

Assign (Ftel,’tsprav’);

Reset (Ftel); { Открытие файла для чтения}

Repeat {Поиск фамилии и адреса абонента по номеру}

Write(’Введите номер телефона: ’);

ReadLn(Num);

Seek(Ftel,Num);

If Not Eof (Ftel) Then

Begin

Read (ftel,Rtel);

With Rtel do

Writeln(’Фамилия: ’,fam:15, ’ Адрес: ’, Adr:15, ’ Номер телефона: ’,nom);

End

else

Writeln(’Неправильный номер’);

Writeln (’Продолжаем?-Д/Н, Y/N’);

Readln (S);

Until (S=’H’) Or (S=’н’) Or (S=’n’) Or (S=’N’);

Writeln (’Конец работы. Нажмите клавишу ENTER’);

Readln;

End.

Пример 9.9 Коррекция телефонного справочника ("Tsprav"), например изменение фамилии абонента. Обычно при коррекции сначала просматривают содержимое записи, а потом, если необходимо, изменяют его.

Program Updtel;

Type

Tel=Record

Nom : Integer;

Fam,Adr : String[15];

End;

Var

Ftel : File Of Tel;

Rtel : Tel;

K,Num : Integer;

S : Char;

Begin

Assign(Ftel,’Tsprav’);

Reset(Ftel); { Открытие файла }

Repeat {Поиск фамилии и адреса абонента по номеру телефона}

Write(’Введите номер телефона: ’);

ReadLn(k);

Seek(Ftel,k);

If Not Eof(Ftel) then

Begin

Read(Ftel,Rtel);

With Rtel do

Write (’Фамилия: ’,fam,’ Адрес: ’,Adr);

Writeln(’Будем менять фамилию?-Д/Н Y/N’);

Readln(S);

If (S=’Д’) (S=’д’) Or (S=’Y’) Or (S=’y’) then

Begin

Writeln(’Введите фамилию’);

Read (Rtel.fam);

Seek (Ftel,k);

Write(Ftel,Rtel);

end;

End

else

Writeln (’Неправильный номер’);

Writeln (’Продолжаем?-Д/Н Y/N’);

Readln(S);

Until (S=’H’) Or (S=’н’) Or (S=’n’) Or (S=’N’);

Writeln (’Конец работы, нажмите клавишу Enter’);

Readln;

end.

Пример 9.10 Набор данных, имя которого задается с клавиатуры, содержит информацию о компьютерах. Запись о компьютере имеет вид

Марка, Цена.

Упорядочить записи в наборе по возрастанию цены.

Program Sort_File;

Type

Computer=Record

Marka : String[10];

Cena : Integer;

End;

Var

FilComp : File of Computer;

Comp1,Comp2 : Computer;

K : Integer;

Perest : Boolean; { Признак перестановок }

FilName : String; { Имя набора данных}

Begin

Writeln(’Введите имя набора данных’);

Readln(FilName);

Assign(Filan,FilName);

{ Упорядочение }

Perest := True;{ Перестановки будут }

While Perest do

Begin

Perest := False; {Перестановок еще не было}

K := 0;

Reset(FilComp); {Открытие файла}

While Not Eof(FilComp) do

Begin

Seek(FilComp,k);

Read(FilComp,Comp1);