Примеры решаемых задач

Пример 1. Составить программу, которая:

а) запишет в файл Price список товаров (название и цена);

б) обработает файл Price следующим образом:

- выведет на экран прайс-лист;

- изменит цену товара с заданным наименованием;

- допишет в файл данные о новом товаре (предварительно проверив, что в файле информации о таком товаре нет).

Программы:

Program A;

Uses Crt;

Type tovar = Record

name: String;

price: Real

End;

Var t: tovar; { переменная t для хранения информации об очередном товаре }

f: File Of tovar; { f – файловая переменная }

k, n: Integer;

Begin

Clrscr;

Assign (f, ’Price’); { связывание файловой переменной f с файлом ‘Price’, который будет создан в текущей папке }

Rewrite(f); { открыли файл для записи }

Write (‘Введите количество товаров в списке ‘);

Readln (n);

For k:=1 To n Do

Begin

Write (‘Введите наименование ’,k,’-го товара ’);

Readln (t.name); { запросили значение первого поля записи }

Write (‘Введите цену товара ’);

Readln (t.price); { запросили значение второго поля записи }

Writeln (f, t) { записали в файл запись t }

End;

Close (f); { закрыли файл }

Writeln (‘Файл создан’); { вывели на экран поясняющее сообщение}

Readln

End.

Program B;

Uses Crt;

Type tovar = Record

name: String;

price: Real

End;

Var t: tovar; { переменная t для хранения информации об очередном товаре }

f: File Of tovar; { f – файловая переменная }

k, n: Integer;

nt: String;

new_price: Real;

new_t: tovar;

Begin

Clrscr;

Assign (f, ’Price’); { связывание файловой переменной f с файлом ‘Price’, который будет создан в текущей папке }

{ вывод на экран содержимого файла }

Reset (f); { открыли файл }

Writeln (‘Прайс – лист: ‘);

While Not Eof (f) Do { пока не достигнут конец файла }

Begin

Readln (f, t); { прочитали из файла очередную запись в переменную t }

Writeln (t.name:20, t.price:10:2) { вывели на экран значения полей записи – наименование и цену товара }

End;

Close (f); { закрыли файл }

{ изменение цены отдельного товара }

Reset (f); { открыли файл }

Write (‘Введите наименование товара, у которого меняется цена ‘);

Readln (name_t);

Write (‘Введите новую цену ‘);

Readln (new_p);

While Not Eof (f) Do { пока не достигнут конец файла }

Begin

Readln (f, t); { прочитали из файла очередную запись в переменную t }

If t.name = nt { если прочитанное из файла наименование товара совпадает с тем, у которого меняется цена, то}

Then Begin

t.price:= new_price; { меняем цену товара в записи t }

Seek (f, FilePos (f) -1); { устанавливаем указатель обратно на ту запись в файле, у которой изменили цену}

Write (f, t) { записываем переменную t с измененным значением поля price в файл }

End

End;

Close (f); { закрыли файл }

{ дописывание в конец файла информации о новом товаре }

Write (‘Введите наименование нового товара ‘);

Readln (new_t.name);

Write (‘Введите цену ‘);

Readln (new_t.price);

Reset (f); { открыли файл }

{ проверим, есть ли данные о таком товаре в файле }

flag:= false; { сначала считаем, что такого товара в файле нет }

While Not Eof (f) Do { пока не достигнут конец файла }

Begin

Readln (f, t); { прочитали из файла очередную запись в переменную t }

If t.name = new_t.name { если прочитанное из файла наименование товара совпадает с тем, который хотим дописать в файл}

Then Flag:= True { запоминаем, что данные о таком товаре есть в файле}

End;

If Not flag { если данных о новом товаре в файле не найдено (т.е. значение переменной flag осталось равным false) }

Then Begin

Seek (f, FileSize (f)); { устанавили указатель в конец файла }

Write (f, new_t) { записали в файл данные о новом товаре}

End;

Close (f); { закрыли файл }

Writeln (‘Новые данные дописаны в файл’);

Readln

End.

Примечание. При проверке, есть ли в файле данные о новом товаре или нет, правильнее заголовок цикла While записать в виде:

While (Not Eof (f)) And (Not Flag)Do …

т.е. «пока не конец файла и товар не найден». Это означает, что просмотр файла будет выполняться либо до конца файла, либо до тех пор, пока в файле не будет найден новый товар.

Контрольные задания

13.1. Составить две программы. Первая из них записывает в текстовый файл N строк текста. Вторая должна выводить текст из файла на экран в виде строк заданной длины.

13.2. «Роза ветров». Файл содержит информацию о том, направлении ветра в течение каждого для прошедшего года в некотором населенном пункте. Составить программу, которая определяет, в каком направлении от города нужно строить металлургический комбинат. Файл должен создаваться вспомогательной программой.

13.2. «База данных». Составить программу, которая создает и обрабатывает базу данных о

a.) книгах;

b.) товарах на складе;

c.) кинофильмах;

d.) школах города;

e.) факультетах университета;

f.) сотрудниках фирмы.

Информация об объекте в базе данных должна представлять собой совокупность разнотипных полей (не менее четырех). Программа должна предлагать пользователю следующие режимы работы:

1. Ввод данных.

2. Вывод данных на экран.

3. Дополнение базы данных.

4. Редактирование базы данных.

5. Поиск данных.

6. Сортировка данных.

7. Завершение работы.

Программа должна предлагать меню, запрашивать номер требуемого режима работы, выполнять необходимые действия до тех пор, пока пользователь не выберет режим «Завершение работы».



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: