Описать запись с именем PRICE - Free Pascal
Формулировка задачи:
Помогите пожалуйста, тема "Записи", вот задание:
Описать запись с именем PRICE, содержащую следующие
поля:
-название товара;
-название магазина, в котором продается товар;
-стоимость товара в руб.
Написать программу, выполняющую следующие действия:
-ввод с клавиатуры данных в массив, состоящий из восьми элементов типа PRICE;
-вывод таблицы на экран;
-записи разместить в алфавитном порядке по названиям магазинов;
-вывод отсортированной таблицы на экран;
-вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры;
-если такого магазина нет, выдать на дисплей соответствующее
сообщение.
Решение задачи: «Описать запись с именем PRICE»
textual
Листинг программы
uses crt;
const n=8;
type price=record
tov,mgz:string[20];
stm:word;
end;
var z:array[1..n] of price;
x:price;
i,j,k:byte;
m:string[20];
begin
clrscr;
writeln('Введите данные о ',n,' товарах:');
for i:=1 to n do
with z[i] do
begin
writeln('Товар ',i);
write(' Название товара: ');readln(tov);
write(' Название магазина: ');readln(mgz);
write(' Стоимость: ');readln(stm);
end;
clrscr;
writeln('Исходный список товаров');
writeln('----------------------------------------------------------------');
writeln('| Название товара | Название магазина | Стоимость товара |');
writeln('----------------------------------------------------------------');
for i:=1 to n do
writeln('|',z[i].tov:20,'|',z[i].mgz:20,'|',z[i].stm:20,'|');
writeln('----------------------------------------------------------------');
for i:=1 to n-1 do
for j:=i+1 to n do
if z[i].mgz>z[j].mgz then
begin
x:=z[i];
z[i]:=z[j];
z[j]:=x;
end;
writeln('Список товаров по алфавиту названий магазинов');
writeln('----------------------------------------------------------------');
writeln('| Название товара | Название магазина | Стоимость товара |');
writeln('----------------------------------------------------------------');
for i:=1 to n do
writeln('|',z[i].tov:20,'|',z[i].mgz:20,'|',z[i].stm:20,'|');
writeln('----------------------------------------------------------------');
{если высота экрана 25 символов, нужно 3 следующих строки, если 40, не нужно}
write('Нажмите любую клавишу для продолжения');
readkey;
clrscr;
write('Введите название магазина для поиска:');
readln(m);
writeln('Список товаров продающихся в магазине ',m);
writeln('----------------------------------------------------------------');
writeln('| Название товара | Название магазина | Стоимость товара |');
writeln('----------------------------------------------------------------');
k:=0;
for i:=1 to n do
if z[i].mgz=m then
begin
k:=1;
writeln('|',z[i].tov:20,'|',z[i].mgz:20,'|',z[i].stm:20,'|');
end;
writeln('----------------------------------------------------------------');
if k=0 then writeln('Такого магазина нет!');
write('Нажмите любую клавишу для выхода');
readkey
end.
Объяснение кода листинга программы
- Объявлены переменные:
- z: массив из n объектов типа price (предполагается, что n равно 8)
- x: объект типа price
- i, j, k: булевые переменные для управления циклом
- m: строковая переменная размером 20 символов
- Запрошены данные о товарах. Для каждого товара запрашиваются название товара, название магазина и стоимость. Эти данные записываются в соответствующие поля объекта типа price.
- Выводится исходный список товаров в формате таблицы.
- Производится сортировка списка товаров по названию магазина в алфавитном порядке.
- Выводится отсортированный список товаров в формате таблицы.
- Запрашивается название магазина для поиска.
- Выводится список товаров, которые продаются в указанном магазине, в формате таблицы. Если такого магазина нет, выводится соответствующее сообщение.
- Запрашивается нажатие любой клавиши для выхода.