Advertisement
Kentoo

Untitled

Jun 23rd, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.35 KB | None | 0 0
  1. unit Unit2;
  2.  
  3. interface
  4. type
  5.   item = record //товар
  6.     name: string[50]; //его имя
  7.     country: string[50]; //его страна
  8.     count: integer; //количество товара
  9.     price: double; //его цена
  10.   end;
  11.   list = array of item; //массив товаров
  12.  
  13.   function countfullprice(a: list): double;
  14.   procedure sortlist(var a: list);
  15.   procedure createspecialarr(a: list; sname: string; var b: list);
  16.   function countsitems(a: list; scountry: string): integer;
  17. implementation
  18.  
  19. uses
  20.   Math;
  21.  
  22.   function countfullprice(a: list): double; //функция подсчета цены всех товаров
  23.   var
  24.     i: integer;
  25.   begin
  26.     Result := 0;
  27.     for i := 0 to High(a) do //перебирая весь массив записываем в специальную переменную Result цену каждого товара
  28.       Result := Result + a[i].price;
  29.   end;
  30.  
  31.   procedure sortlist(var a: list); //процедура сортировки массива товаров по алфавиту
  32.   var
  33.     i, j, c: integer;
  34.     notswapped: boolean;
  35.     temp: item;
  36.   begin
  37.     for i := 0 to High(a) do //проходя по всему массиву
  38.       for j := 0 to High(a) - 1 do //второй цикл прохода
  39.       begin
  40.         c := 1; //начинаем с первого символа
  41.         notswapped := true; //еще не поменяли местами
  42. // пока не пройдем по всем символам слова минимальной длины или не поменяем
  43.         while ((c <= min(length(a[j].country), length(a[j + 1].country))) or (notswapped)) do
  44.         begin
  45.           if (a[j].country[c] > a[j + 1].country[c]) then // если буква первого слова стоит в алфавите дальше, чем буква второго
  46.             begin
  47.               temp := a[j];
  48.               a[j] := a[j + 1];
  49.               a[j + 1] := temp;// меняем их местами
  50.               notswapped := false;
  51.             end;
  52.           c := c + 1; // переходим к следующей букве
  53.         end;
  54.       end;
  55.   end;
  56.  
  57.   procedure createspecialarr(a: list; sname: string; var b: list); // создаем массив товаров с некоторым названием
  58.   var
  59.     i, c: integer;
  60.   begin
  61.     c := 0;
  62.     for i := 0 to High(a) do / проходя по всему массиву
  63.       begin
  64.         if (a[i].name = sname) then // если такое имя есть
  65.           begin
  66.             c := c + 1; //увеличиваем количество совпадений
  67.             SetLength(b, c); //пересоздаем массив
  68.             b[c - 1] := a[i]; //записываем найденный элемент в массив
  69.           end;
  70.       end;
  71.   end;
  72.  
  73.   function countsitems(a: list; scountry: string): integer; //считаем количество товаров из определенной страны
  74.   var
  75.     i: integer;
  76.   begin
  77.     Result := 0;
  78.     for i := 0 to High(a) do // проходя по всему массиву
  79.       if (a[i].country = scountry) then //если страны совпали
  80.         Result := Result + a[i].count; // прибавляем к количеству товаров количество данного
  81.   end;
  82. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement