Advertisement
TShiva

16-20

Dec 21st, 2014
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4.  
  5. struct Payment
  6. {
  7.     char *name;    
  8.     char *date;
  9.     int summ;
  10. };
  11.  
  12. char* StringCopy(char* s)
  13. {
  14.     char* Str = 0;
  15.     int lenght = 0;
  16.     for (int i = 0; s[i]; i++)
  17.         lenght++;
  18.     lenght++;
  19.     Str = new char [lenght];
  20.     for (int i = 0; i<lenght; i++)
  21.         Str[i] = s[i];
  22.     return Str;
  23. }
  24. Payment* Init(int n)
  25. {
  26.     Payment* A = new Payment [n];
  27.     return A;
  28. }
  29.  
  30. void Delete(Payment* &A, int n)
  31. {
  32.     for (int i = 0; i<n; i++)
  33.     {
  34.         delete [](A[i].name);
  35.         delete [](A[i].date);
  36.     }
  37.     delete []A;
  38.     A=0;
  39. }
  40.  
  41. void DataInput(Payment* &A, int n)
  42. {
  43.     const int N = 10000;
  44.     char** Array = 0;
  45.     int size = n;
  46.     Array = new char* [size];
  47.     cout << "Enter data : F_I_O_dd.mm.yy_summ" << endl;
  48.     for (int i = 0; i<size; i++)
  49.     {
  50.         char TempString[N];
  51.         cin.getline(TempString, N);
  52.         Array[i] = StringCopy(TempString);
  53.     }
  54.  
  55.     for (int i = 0; i<size; i++)
  56.     {
  57.         int spacesnum = 0, j = 0, q = 0;
  58.         for (j = 0; Array[i][j]; j++)
  59.         {
  60.             if (Array[i][j]==' ')
  61.                 spacesnum++;
  62.             if (spacesnum==3)
  63.                 break;
  64.         }
  65.         A[i].name = new char [j+1];
  66.         for (int k = 0; k<j; k++)
  67.             A[i].name[k] = Array[i][k];
  68.         A[i].name[j]=0;
  69.         j++;
  70.         A[i].date = new char [9];
  71.         for (int k = j; k<j+8; k++)
  72.             A[i].date[k-j] = Array[i][k];
  73.         A[i].date[8]=0;
  74.         j=j+9;
  75.         int lenght=0;
  76.         for (int k = j; Array[i][k]; k++)
  77.             lenght++;
  78.         char* pay=0;
  79.         int p = 0;
  80.         pay = new char [lenght+1];
  81.         for (int k = j; Array[i][k]; k++)
  82.             pay[p++] = Array[i][k];
  83.         pay[p] = 0;
  84.         A[i].summ=atoi(pay);
  85.         delete [] pay;
  86.     }
  87.     for (int i=0; i<size; i++)
  88.     {
  89.         delete [] Array[i];
  90.     }
  91.     delete [] Array;
  92. }
  93.  
  94. void DataPrint(Payment* A, int n)
  95. {
  96.     for (int i = 0; i<n; i++)
  97.         cout << A[i].name << " " << A[i].date << " " << A[i].summ << endl;
  98. }
  99. void FindPeople(Payment* A, int n, char ch)
  100. {
  101.     bool flag = false;
  102.     for (int i = 0; i<n; i++)
  103.     {
  104.         if ((A[i].name[0]==toupper(ch))||(A[i].name[0]==tolower(ch)))
  105.         {
  106.             cout << A[i].name << " " << A[i].date << " " << A[i].summ << endl;
  107.             flag = true;
  108.         }
  109.     }
  110.     if (!flag)
  111.         cout << "There are no such surnames." << endl;
  112. }
  113. void FindPay(Payment* A, int n, int s)
  114.  {
  115.     bool flag = false;
  116.     for (int i = 0; i<n; i++)
  117.     {
  118.         if (A[i].summ > s)
  119.         {
  120.             cout << A[i].name << " " << A[i].date << " " << A[i].summ << endl;
  121.             flag = true;
  122.         }
  123.     }
  124.     if (!flag)
  125.         cout << "There are no such payments." << endl;
  126.  }
  127.  
  128. void TotalPay(Payment* A, int n, char* d)
  129.  {
  130.     int sum = 0;
  131.     for (int i = 0; i<n; i++)
  132.     {
  133.         if (!(strcmp(A[i].date, d)) )
  134.         {
  135.             sum+=A[i].summ;
  136.         }
  137.     }
  138.     cout << "Total payment of this day = " << sum << endl;
  139.  }
  140.  
  141.  
  142. void NoPay(Payment* A, int n)
  143.  {
  144.      bool month [12];
  145.      for (int i = 0; i<12; i++)
  146.          month[i] = false;
  147.      char* num = new char [3];
  148.      num[2] = 0;
  149.      int m = 0;
  150.      for (int i=0; i<n; i++)
  151.      {
  152.         num[0]=A[i].date[3];
  153.         num[1]=A[i].date[4];
  154.         m = atoi(num);
  155.         month[m-1] = true;
  156.  
  157.      }
  158.      delete[] num;
  159.      cout << endl << "There were no payments in monthes: " << endl;
  160.      for (int i = 0; i<12; i++)
  161.      {
  162.          if (!month[i])
  163.          {
  164.              switch (i){
  165.                 case 0:
  166.                      cout << "January; " << endl;
  167.                      break;
  168.                 case 1:
  169.                      cout << "February " << endl;
  170.                      break;
  171.                 case 2:
  172.                      cout << "March; " << endl;
  173.                      break;
  174.                 case 3:
  175.                      cout << "April; " << endl;
  176.                      break;
  177.                 case 4:
  178.                      cout << "May; " << endl;
  179.                      break;
  180.                 case 5:
  181.                      cout << "June; " << endl;
  182.                      break;
  183.                 case 6:
  184.                      cout << "July; " << endl;
  185.                      break;
  186.                 case 7:
  187.                      cout << "August; " << endl;
  188.                      break;
  189.                 case 8:
  190.                      cout << "September; " << endl;
  191.                      break;
  192.                 case 9:
  193.                      cout << "October; " << endl;
  194.                      break;
  195.                 case 10:
  196.                      cout << "November; " << endl;
  197.                      break;
  198.                 case 11:
  199.                      cout << "December; " << endl;
  200.                      break;
  201.              }
  202.          }
  203.      }
  204.      
  205.  }
  206. void main ()
  207. {
  208.     Payment* Massiv = 0;
  209.     int n = 0, a;
  210.     cout << "How many strings will be?" << endl;
  211.     cin >> n;
  212.     cin.ignore(256,'\n');
  213.     Massiv = Init(n);
  214.     DataInput(Massiv, n);
  215.    
  216.     system("cls");
  217.     DataPrint(Massiv, n);
  218.    
  219.     cout << "Enter the 1st letter of surname : ";
  220.     char FirstLetter;
  221.     cin >> FirstLetter;
  222.     if (cin.peek() == '\n')
  223.         cin.ignore();
  224.     FindPeople(Massiv, n, FirstLetter);
  225.    
  226.     cout << "You are looking for a payment more than : ";
  227.     int Pay;
  228.     cin >> Pay;
  229.     cin.ignore();
  230.     FindPay(Massiv, n, Pay);
  231.    
  232.     cout << "Enter date (dd.mm.yy) : ";
  233.     char* date = new char [9];
  234.     cin.getline(date,9);
  235.     TotalPay(Massiv, n, date);
  236.     NoPay(Massiv, n);
  237.     Delete(Massiv, n);
  238.     system("PAUSE");
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement