Advertisement
AnyaAS

Zapravka

Feb 18th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.49 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <string>
  4. #include <conio.h>
  5. using namespace std;
  6.  
  7.  
  8. struct Bak
  9. {
  10.     string name;
  11.     float count;
  12. };
  13. struct Prodaj
  14. {
  15.     string name;
  16.     string data;
  17.     float count;
  18.  
  19. };
  20. struct AZS
  21. {
  22.     string name;
  23.     int countBak;
  24.     Bak *mas;
  25.     int countProdaj;
  26.     Prodaj *arr;
  27. };
  28. Prodaj *AddProdaj(Prodaj *mas, int *size, float value, string a);
  29. Bak Zakupka(Bak mas, float value);
  30. Bak Prodaja(Bak mas, float value);
  31. void PrintVidiTopliva(Bak *mas, int size);
  32. void PrintOstatokTopliva(Bak *mas, int size);
  33. void Statistika(Prodaj *mas, int size, string d);
  34. int _tmain(int argc, _TCHAR* argv[])
  35. {
  36.     setlocale(LC_ALL, "Russian");
  37.     Bak b1 = { " A-95 ", 0 };
  38.     Bak b2 = { " A-92 ", 0 };
  39.     Bak b3 = { " ДП ", 0 };
  40.     AZS a;
  41.     a.name = " WOG ";
  42.     a.countBak = 3;
  43.     a.mas = new Bak[a.countBak] {b1, b2, b3};
  44.     a.countProdaj = 0;
  45.     a.arr = new Prodaj[0];
  46.     for (;;)
  47.     {
  48.         system("cls");
  49.         cout << "1. Закупить топливо" << endl;
  50.         cout << "2. Продать топливо" << endl;
  51.         cout << "3. Статистика" << endl;
  52.         cout << "4. Остаток топлива в баке" << endl;
  53.         int v;
  54.         float value;
  55.         string d;
  56.         cin >> v;
  57.         switch (v)
  58.         {
  59.         case 1:
  60.             cout << "Выберите марку топлива -> " << endl;
  61.             PrintVidiTopliva(a.mas, a.countBak);
  62.             cin >> v;
  63.             cout << "Укажите количество топлива (литры) -> ";
  64.             cin >> value;
  65.             a.mas[v] = Zakupka(a.mas[v], value);
  66.             break;
  67.         case 2:
  68.             cout << "Выберите марку топлива -> " << endl;
  69.             PrintVidiTopliva(a.mas, a.countBak);
  70.             cin >> v;
  71.             cout << "Укажите количество топлива (литры) -> ";
  72.             cin >> value;
  73.             a.mas[v] = Prodaja(a.mas[v], value);
  74.             a.arr = AddProdaj(a.arr, &a.countProdaj, value, a.mas[v].name);
  75.             break;
  76.         case 3:
  77.             cout << "Укажите за какую дату вывести статистику -> " << endl;
  78.             cin >> d;
  79.             Statistika(a.arr, a.countProdaj, d);
  80.             _getch();
  81.             break;
  82.         case 4:
  83.             PrintOstatokTopliva(a.mas, a.countBak);
  84.             _getch();
  85.             break;
  86.  
  87.         default:
  88.             break;
  89.         }
  90.     }
  91. }
  92.  
  93. Prodaj *AddProdaj(Prodaj *mas, int *size, float value, string a)
  94. {
  95.     Prodaj p;
  96.     p.name = a;
  97.     cout << "Введите дату (в формате дд.мм.гг) -> ";
  98.     cin >> p.data;
  99.     p.count = value;
  100.  
  101.     Prodaj *newmas = new Prodaj[*size + 1];
  102.     for (int i = 0; i < *size; i++)
  103.     {
  104.         newmas[i] = mas[i];
  105.     }
  106.     newmas[*size] = p;
  107.     *size += 1;
  108.     return newmas;
  109. }
  110. Bak Zakupka(Bak mas, float value)
  111. {
  112.     mas.count += value;
  113.     return mas;
  114. }
  115. Bak Prodaja(Bak mas, float value)
  116. {
  117.     if (mas.count < value)
  118.     {
  119.         cout << "В баке недостаточно топлива! Выберите меньший объем." << endl;
  120.         return mas;
  121.     }
  122.     else
  123.     {
  124.         mas.count -= value;
  125.     }
  126.     return mas;
  127. }
  128. void PrintVidiTopliva(Bak *mas, int size)
  129. {
  130.     for (int i = 0; i < size; i++)
  131.     {
  132.         cout << i << ". " << mas[i].name << endl;
  133.     }
  134. }
  135. void PrintOstatokTopliva(Bak *mas, int size)
  136. {
  137.     for (int i = 0; i < size; i++)
  138.     {
  139.         cout << i << ". " << mas[i].name << "\tОстаток: " << mas[i].count << " литров" << endl;
  140.     }
  141. }
  142.  
  143. void Statistika(Prodaj *mas, int size, string d)
  144. {
  145.     for (int i = 0; i < size; i++)
  146.     {
  147.         if (mas[i].data == d)
  148.         {
  149.             cout << "За " << mas[i].data << " продано " << mas[i].count << " литров топлива " << mas[i].name << endl;
  150.         }
  151.         else
  152.         {
  153.             cout << "В этот день продаж не было." << endl;
  154.         }
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement