Program Goods_Base; uses crt; const n=8;{количество записей} type price=record{тип запись товар} tov: string[80]; {названия товаров} mag: string[50]; {названия магазинов} stm: word; {стоимость} end; Base = array[1..n] of price; {массив записей} Var Goods : Base; {для хранения базы данных} Goods_Number : word; {для хранения размера базы} MenuItem : byte; {номер пункта меню} f:file of price;{типизированный файл записей} Procedure Base_Load(var A : Base); Var x: price;{переменная для считывания и сортировки записей} i, j:byte; {счетчик} Begin writeln('Введите данные о ',n,' товарах:'); for i:=1 to n do with A[i] do begin {пока очередная запись} writeln('Товар ',i); write (' Название товара: '); readln (tov); write (' Название магазина: '); readln (mag); write (' Стоимость: '); readln (stm); end; for i:=1 to n-1 do {отсортируем записи} for j:=i+1 to n do if A[i].tov>A[j].tov then{по алфавиту(возрастанию) названий товаров} begin x:=A[i]; A[i]:=A[j]; A[j]:=x; end; End; Procedure Base_Search (const A : Base); var i,k:byte; {счетчики, фиксатор} t:string;{переменная для ввода названия товара} begin write('Введите название товара для поиска:'); readln(t); k:=0; for i:=1 to n do if A[i].tov=t then {если поле записи товар совпало с введенным} begin k:=1; writeln(A[i].tov,' ',A[i].mag,' ',A[i].stm); {выводим все поля записи} end; if k=0 then writeln('Такого товара нет!'); write('Press Enter...'); readln; end; Procedure Base_Record (const A : Base); var x: price;{переменная для считывания и сортировки записей} i :byte; {счетчик} name:string;{переменная для имени файла} begin write('Введите имя файла для записи:'); readln(name); assign(f,name); {связываем переменную с файлом на диске} rewrite(f); {открываем файл для записи} for i:=1 to n do {по размеру массива} write(f,A[i]); {заносим его элементы в файл записей} writeln('Содержание файла:'); reset(f); {откроем файл для чтения} while not eof(f) do {пока не конец файла} begin read(f,x); {читаем записи в переменную} writeln(x.tov,' ',x.mag,' ',x.stm); {выводим на экран поля записи} end; close(f); {закрываем файл} write('Press Enter...'); readln; end; Begin repeat {цикл для работы с меню} Clrscr; {очистка экрана} writeln('Меню:'); {вывод меню программы} writeln('1. Ввод данных'); writeln('2. Поиск товара по названию'); writeln('3. Запись в файл'); writeln('4. Выход'); writeln; write('Укажите пункт меню: '); readln(MenuItem); {ввод выбранного пункта меню} case MenuItem of 1 : Base_Load(Goods); {по пункту 1 вызов процедуры ввод данных} 2 : Base_Search (Goods); {по пункту 2 вызов процедуры поиска} 3 : Base_Record (Goods); {по пункту 3 вызов процедуры запись в файл} end; until MenuItem=4; {по пункту 4 завершение цикла работы с меню} End.