Advertisement
krause_g

Untitled

Oct 24th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.62 KB | None | 0 0
  1. program Project17;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils;
  7.  
  8. //1. Сначала создаем запись.
  9. {Запись Паскаля – структурированный комбинированный тип данных, состоящий из
  10. фиксированного числа компонент (полей) разного типа.}
  11. type product=record
  12.   name:string[20];  //название продукта. Тип: строка (20 - это 20 ячеек для букв)
  13.   price:integer;   // цена. Тип: целочисленный
  14.   count:array[1..5] of integer;  //массив из 5 цен для каждого из 5 магазинов.
  15.                                  //Тип целочисленный
  16. end;
  17. ////////////////////////////////////////
  18.  
  19.  
  20. //2. Описание файлового типа для работы с типизированным файлом
  21.  
  22. //Типизированный файл - последовательность элементов одного типа.
  23. ft = file of product;
  24.  
  25. ///////////////////////////////////////////
  26.  
  27.  
  28.  
  29. ///3.Это мы объявляем 2 переменные. Первая f-типизированный файл записей
  30. ///  Второй файл f1 - это текстовый файл, куда дальше мы записываем
  31. ///  //названия товаров, цена которых меньше указанного значения
  32. var f:ft;
  33.     f1:text;
  34. ///
  35.  
  36.  
  37. ///////4.Процедура ввода данных/////////////////////////////////////////////////
  38. {Сначала мы записываем все данные в записи, и после того, как запись каждого
  39. итого (i) продукта полностью введена - записываем эту запись в типизированный файл
  40. }
  41. procedure input(var f:ft); //
  42. var a:product;
  43.     i,j,n:integer;
  44. begin
  45.   rewrite(f); //открываем наш файл на запись
  46.   writeln;    //это для красоты, чтобы был пробел
  47.   writeln('Enter count of products:');       //ждем от пользователя число продуктов
  48.   readln(n);        // записываем число в переменную 'n'
  49.  
  50.   for i := 1 to n do //запускаем цикл от 1 до n чтобы ввести данные каждого товара
  51.     begin
  52.       writeln; //для красоты :D
  53.       writeln('======',i,'===PRODUCT=======');
  54.       write('Enter name:');
  55.       readln(a.name); //записываем название в запись
  56.       write('Enter price:');
  57.       readln(a.price);  // записываем цену в запись
  58.       for j := 1 to 5 do  // новый цикл в цикле, лол, это чтобы записать цены по 5 магазинам
  59.         begin
  60.           write('Count in ',j,' shop:');
  61.           readln(a.count[j]);//вводим цену в каждый итый магазин
  62.         end;
  63.       write(f,a);   //ВАЖНО БЛЯ! ТЕПЕРЬ ВСЮ ЭТУ ХУЕРГУ ЗАПИСЫВАЕМ В НАШ ТИПИЗИРОВАННЫЙ ФАЙЛ
  64.     end;
  65.   closefile(f); // обязательно закрываем наш файл, чтобы от сохранился
  66. end;
  67. ///////////////////////////////////////////////////////////////////////////////
  68.  
  69.  
  70.  
  71.  
  72.  
  73. //5. ПРОЦЕДУРА ПОИСКА ТОВАРА С ЦЕНОЙ < ЗАДАННОГО ЗНАЧЕНИЯ   //
  74. procedure min(var f:ft; var f1:text);
  75. var a:product; i,c:integer;
  76. begin
  77.   reset(f); //открываем файл на чтение
  78.   rewrite(f1);  // а текстовый файл на запись
  79.   writeln;    // для красоты
  80.   writeln('Enter price:'); // просим ввести цену
  81.   readln(c); //записываем введеное значение цены в целочисленную переменную 'c'
  82.   writeln; //для пробела
  83.   while not eof(f) do //цикл "Пока не достигнут конец файла"
  84.     begin
  85.       read(f,a); //читаем каждую компоненту каждого товара
  86.               {компонентой будет название, цена и цены в пяти магазинах}
  87.       if a.price < c then  //УСЛОВИЕ: если цена этого товара <  чем 'c'
  88.         begin
  89.           writeln(f1,a.name); // записываем название этого товара в текстовый файл f1
  90.           writeln('Product with price < ',c,': ', a.name); //говорим, что продукт с ценой меньше чем введеное значние это такой-то такой-то
  91.         end;
  92.     end;
  93.   closefile(f1);//закрываем файлы
  94.   closefile(f);//закрываем файлы
  95. end;
  96.  
  97.  
  98. //6. ПРОЦЕДУРА ПОИСКА ТОВАРА С МАКС.ЦЕНОЙ ПО 5 МАГАЗИНАМ//
  99. {В задании не нужно искать минимальное значение, но я сделал для наглядности
  100. }
  101. procedure find_max(var f:ft);
  102. var a:product; i,j,min,max:integer;
  103.     maxx:string[20];//в эту переменную запишем название товара с макс. ценой
  104. begin
  105.   reset(f);//открываем наш файл на чтение
  106.   read(f,a); //считываем из файла каждую компоненту
  107.   min:=a.price; //присваиваем нашим переменным такие изначальные значения цены
  108.   max:=a.price;
  109.   while not eof(f) do //цикл пока не достигнут конец файла 'eof' - end of file(f)
  110.     begin
  111.       read(f,a);  //считываем из файла каждую компоненту каждого товара
  112.       if a.price>max then //если цена товара больше чем макс.значение, то
  113.         begin
  114.           max:=a.price;    //присваиваем нашей переменной 'max' значение максимальный цены
  115.           maxx:=a.name; // а переменной 'maxx' название товара
  116.         end;
  117.       if a.price<min then min:=a.price;//если цена товара < чем мин..значение, то переменной min присваиваем значение цены этого товара
  118.     end;
  119.   writeln('max=',max,' min=',min); //для наглядности
  120.   writeln('Product with max price: ', maxx); //Пишем, то товар с таким-то названием имеет максимальную цену
  121.   closefile(f);  //ОБЯЗАТЕЛЬНО ЗАКРЫВАЕМ ФАЙЛ
  122. end;
  123. ////////////////////////////////////////////////////
  124.  
  125. //НАШ ОСНОВНОЙ BEGIN//
  126. begin
  127.   assignfile(f1,'text.txt'); // СВЯЗЫВАЕМ текстовый файл с файловой переменной  f1
  128.   assignfile(f,'base.ini'); // связываем типизированный файл записей с файловой переменной f
  129.   input(f);//запускам процедуру ввода данных и передаем наш файл в скобочках
  130.   min(f,f1); //запускам процедуру поиска товара с мин. установленной ценой и передаем f и f1
  131.   find_max(f);//запускаем процедуру поиска товара с макс.ценой по всем 5-ти магазинами и передаем f
  132.   readln; //это чтобы программа не "схлопывалась" после выполения всех процедур
  133. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement