Исправьте пожалуста ошибки в программе Задание18 Описать запись с именем Price,...

0 голосов
76 просмотров

Исправьте пожалуста ошибки в программе
Задание18 Описать запись с именем Price, содержащую следующие поля: название товара, на- звание магазина, в котором продается товар; стоимость товара в рублях. Написать программу, выполняющую следующие действия О ввод данных с клавиатуры в массив, состоящий из восьми элементов типа Price с упорядочением записей в алфавитном порядке по названиям товаров; вывод на экран информации о товаре, название которого введено с клавиатуры, а если таких товаров нет, вывод на экран соответствующего сообщения запись массива в файл под заданным с клавиатуры именем.

Program Goods_Base;
uses crt;
const n=8;{количество записей}
type price=record{тип запись товар}
tov: string; {названия товаров}
mag: string; {названия магазинов}
stm: word; {стоимость}
end;
Base = array[1..n] of price; {массив записей}
Var
Goods : Base; {для хранения базы данных}
Goods_Number : word; {для хранения размера базы}
MenuItem : byte; {номер пункта меню}

Procedure Base_Load(var A : Base; const n: word);
Var
x: price;{переменная для считывания и сортировки записей}
i, j:byte; {счетчик}
Begin
writeln('Введите данные о ',n,' товарах:');
for i:=1 to n do
with A[i] do {пока очередная запись}
writeln('Товар ',i);
write (' Название товара: ');
readln (tov);
write (' Название магазина: ');
readln (mag);
write (' Стоимость: ');
readln (stm);
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;

Procedure Base_Search (const A : Base; const n);
var
i,j,k:byte; {счетчики, фиксатор}
t:string;{переменная для ввода названия товара}
x:price;{переменная для считывания и сортировки записей}
begin
write('Введите название товара для поиска:');
readln(t);
k:=0;
for i:=1 to n do
if z[i].tov=t then {если поле записи товар совпало с введенным}
begin
k:=1;
writeln(z[i].tov,' ',z[i].mag,' ',z[i].stm); {выводим все поля записи}
end;
if k=0 then writeln('Такого товара нет!');
write('Press Enter...');
readln;

Procedure Base_Record (const A : Base; const n);
var
x: price;{переменная для считывания и сортировки записей}
i, j:byte; {счетчик}
f:file of price;{типизированный файл записей}
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, Goods_Number); {по пункту 1 вызов процедуры ввод данных}
2 : Base_Search (Goods, Goods_Number); {по пункту 2 вызов процедуры поиска}
3 : Base_Record (Goods, Goods_Number); {по пункту 3 вызов процедуры запись в файл}
end;
until MenuItem=4; {по пункту 4 завершение цикла работы с меню}
End.


Информатика (38 баллов) | 76 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Исправленный файл - в прилагаемом файле.


Скачать вложение Текст (TXT)
(194k баллов)