Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.25 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. #include <windows.h>
  4. #include <vector>
  5. #include <stdlib.h>
  6.  
  7. using namespace std;
  8.  
  9. struct product
  10. {
  11.     long number, left;
  12.     short made_day, made_month, made_year, before_day, before_month, before_year;
  13.     string name;
  14. };
  15.  
  16. int main()
  17. {
  18.     //while (true){
  19.     SetConsoleOutputCP(1251);
  20.     SetConsoleCP(1251);
  21.  
  22.     //SetConsoleOutputCP(CP_UTF8);
  23.     vector <product> v;
  24.     int days_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  25.     product p;
  26.     long i = 0, j = 0, a;
  27.     string s;
  28.     char c;
  29.  
  30.     ifstream fin ("database.txt");
  31.     ofstream fout ("log.xls");
  32.     //Ввод данных (дата изготовления, дата конца срока годности, колво товара, наименование)
  33.     while (fin)
  34.     {
  35.         fin >> a; p.made_day = a; fin >> c;
  36.         fin >> a; p.made_month = a; fin >> c;
  37.         fin >> a; p.made_year = a;
  38.  
  39.         fin >> a; p.before_day = a; fin >> c;
  40.         fin >> a; p.before_month = a; fin >> c;
  41.         fin >> a; p.before_year = a;
  42.  
  43.         fin >> a; p.number = a;
  44.         getline(fin, s); p.name = s; fin >> c;
  45.  
  46.         v.push_back(p);
  47.     }
  48.  
  49.     //получение сегодняшней даты
  50.     SYSTEMTIME cur_time;
  51.     GetSystemTime(&cur_time);
  52.     short dd, mm, yy;
  53.     long term, leap;
  54.     dd = cur_time.wDay; mm = cur_time.wMonth; yy = cur_time.wYear;
  55.  
  56.     //подсчёт оставшегося кол-ва дней для каждого товара
  57.     for (i = 0; i < v.size(); i++)
  58.     {
  59.         leap = 0;
  60.  
  61.         for (j = yy + 1; j < v[i].before_year; j++)
  62.             if (!(j % 400) || ((j % 100) && !(j % 4)))
  63.                 leap++;
  64.  
  65.         if ((!(yy % 400) || ((yy % 100) && !(yy % 4))) && mm < 3)
  66.             leap++;
  67.  
  68.         if ((!(v[i].before_year % 400) || ((v[i].before_year % 100) && !(v[i].before_year % 4))) && v[i].before_month > 2)
  69.             leap++;
  70.  
  71.         term = max(yy - v[i].before_year - 1, 0) * 365 + leap;
  72.  
  73.         if (v[i].before_year == yy)
  74.             a = yy + 1;
  75.         else
  76.             a = 1;
  77.  
  78.         for (j = a; j < v[i].before_month; j++)
  79.             term += days_in_month[j];
  80.  
  81.         if (mm != v[i].before_month || yy != v[i].before_year)
  82.             term += days_in_month[mm] - dd + v[i].before_day;
  83.         else
  84.             term += v[i].before_day - dd;
  85.  
  86.         v[i].left = term;
  87.     }
  88.  
  89.     //Вывод в файл
  90.     fout << "Наименование   Количество товара   Дней до окончания срока годности\n";
  91.     for (i = 0; i < v.size(); i++)
  92.         fout << v[i].name << "  " << v[i].number << "   " << v[i].left << '\n';
  93.  
  94.     // Вывод на экран
  95.     cout << "Наименование   Количество товара   Дней до окончания срока годности\n";
  96.     for (i = 0; i < v.size(); i++)
  97.         cout << v[i].name << "  " << v[i].number << "   " << v[i].left << '\n';
  98.  
  99.     cout << "Отчёт за " << cur_time.wDay << "." << cur_time.wMonth << "." << cur_time.wYear << " " << cur_time.wHour << ":" << cur_time.wMinute << ":" << cur_time.wSecond << " сохранён в файле \"log.xls\"";
  100.     //system ("cls");
  101.     //}
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement