Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project17;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- //1. Сначала создаем запись.
- {Запись Паскаля – структурированный комбинированный тип данных, состоящий из
- фиксированного числа компонент (полей) разного типа.}
- type product=record
- name:string[20]; //название продукта. Тип: строка (20 - это 20 ячеек для букв)
- price:integer; // цена. Тип: целочисленный
- count:array[1..5] of integer; //массив из 5 цен для каждого из 5 магазинов.
- //Тип целочисленный
- end;
- ////////////////////////////////////////
- //2. Описание файлового типа для работы с типизированным файлом
- //Типизированный файл - последовательность элементов одного типа.
- ft = file of product;
- ///////////////////////////////////////////
- ///3.Это мы объявляем 2 переменные. Первая f-типизированный файл записей
- /// Второй файл f1 - это текстовый файл, куда дальше мы записываем
- /// //названия товаров, цена которых меньше указанного значения
- var f:ft;
- f1:text;
- ///
- ///////4.Процедура ввода данных/////////////////////////////////////////////////
- {Сначала мы записываем все данные в записи, и после того, как запись каждого
- итого (i) продукта полностью введена - записываем эту запись в типизированный файл
- }
- procedure input(var f:ft); //
- var a:product;
- i,j,n:integer;
- begin
- rewrite(f); //открываем наш файл на запись
- writeln; //это для красоты, чтобы был пробел
- writeln('Enter count of products:'); //ждем от пользователя число продуктов
- readln(n); // записываем число в переменную 'n'
- for i := 1 to n do //запускаем цикл от 1 до n чтобы ввести данные каждого товара
- begin
- writeln; //для красоты :D
- writeln('======',i,'===PRODUCT=======');
- write('Enter name:');
- readln(a.name); //записываем название в запись
- write('Enter price:');
- readln(a.price); // записываем цену в запись
- for j := 1 to 5 do // новый цикл в цикле, лол, это чтобы записать цены по 5 магазинам
- begin
- write('Count in ',j,' shop:');
- readln(a.count[j]);//вводим цену в каждый итый магазин
- end;
- write(f,a); //ВАЖНО БЛЯ! ТЕПЕРЬ ВСЮ ЭТУ ХУЕРГУ ЗАПИСЫВАЕМ В НАШ ТИПИЗИРОВАННЫЙ ФАЙЛ
- end;
- closefile(f); // обязательно закрываем наш файл, чтобы от сохранился
- end;
- ///////////////////////////////////////////////////////////////////////////////
- //5. ПРОЦЕДУРА ПОИСКА ТОВАРА С ЦЕНОЙ < ЗАДАННОГО ЗНАЧЕНИЯ //
- procedure min(var f:ft; var f1:text);
- var a:product; i,c:integer;
- begin
- reset(f); //открываем файл на чтение
- rewrite(f1); // а текстовый файл на запись
- writeln; // для красоты
- writeln('Enter price:'); // просим ввести цену
- readln(c); //записываем введеное значение цены в целочисленную переменную 'c'
- writeln; //для пробела
- while not eof(f) do //цикл "Пока не достигнут конец файла"
- begin
- read(f,a); //читаем каждую компоненту каждого товара
- {компонентой будет название, цена и цены в пяти магазинах}
- if a.price < c then //УСЛОВИЕ: если цена этого товара < чем 'c'
- begin
- writeln(f1,a.name); // записываем название этого товара в текстовый файл f1
- writeln('Product with price < ',c,': ', a.name); //говорим, что продукт с ценой меньше чем введеное значние это такой-то такой-то
- end;
- end;
- closefile(f1);//закрываем файлы
- closefile(f);//закрываем файлы
- end;
- //6. ПРОЦЕДУРА ПОИСКА ТОВАРА С МАКС.ЦЕНОЙ ПО 5 МАГАЗИНАМ//
- {В задании не нужно искать минимальное значение, но я сделал для наглядности
- }
- procedure find_max(var f:ft);
- var a:product; i,j,min,max:integer;
- maxx:string[20];//в эту переменную запишем название товара с макс. ценой
- begin
- reset(f);//открываем наш файл на чтение
- read(f,a); //считываем из файла каждую компоненту
- min:=a.price; //присваиваем нашим переменным такие изначальные значения цены
- max:=a.price;
- while not eof(f) do //цикл пока не достигнут конец файла 'eof' - end of file(f)
- begin
- read(f,a); //считываем из файла каждую компоненту каждого товара
- if a.price>max then //если цена товара больше чем макс.значение, то
- begin
- max:=a.price; //присваиваем нашей переменной 'max' значение максимальный цены
- maxx:=a.name; // а переменной 'maxx' название товара
- end;
- if a.price<min then min:=a.price;//если цена товара < чем мин..значение, то переменной min присваиваем значение цены этого товара
- end;
- writeln('max=',max,' min=',min); //для наглядности
- writeln('Product with max price: ', maxx); //Пишем, то товар с таким-то названием имеет максимальную цену
- closefile(f); //ОБЯЗАТЕЛЬНО ЗАКРЫВАЕМ ФАЙЛ
- end;
- ////////////////////////////////////////////////////
- //НАШ ОСНОВНОЙ BEGIN//
- begin
- assignfile(f1,'text.txt'); // СВЯЗЫВАЕМ текстовый файл с файловой переменной f1
- assignfile(f,'base.ini'); // связываем типизированный файл записей с файловой переменной f
- input(f);//запускам процедуру ввода данных и передаем наш файл в скобочках
- min(f,f1); //запускам процедуру поиска товара с мин. установленной ценой и передаем f и f1
- find_max(f);//запускаем процедуру поиска товара с макс.ценой по всем 5-ти магазинами и передаем f
- readln; //это чтобы программа не "схлопывалась" после выполения всех процедур
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement