Advertisement
xTheEc0

4. Bagažas (Vad 111psl.)

Jan 19th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. /*
  2. 5
  3. Jonaitis             3 2 3 2
  4. Petraitis            2 3 2
  5. Antanaitis           2 4 3
  6. Kizlaitis            3 2 1 2
  7. Pranaitis            2 2 2
  8. 2 6 2
  9. */
  10. #include <iostream>
  11. #include <iomanip>
  12. #include <fstream>
  13. using namespace std;
  14. const char duomF[] = "2.txt";
  15. const char rezF[] = "rez2.txt";
  16.  
  17. const int CPav = 20;
  18. const int CMax = 501;
  19.  
  20. struct bagazas
  21. {
  22.     string pavarde;
  23.     int bagazoKiekis;
  24.     double bagazoSvoris;
  25. };
  26.  
  27. void skaitymas(bagazas A[], int &n, int &k, int &m, int &x, int &y)
  28. {
  29.     char eil[CPav+1];
  30.     double tempSvoris;
  31.     ifstream df(duomF);
  32.     df >> n;
  33.     for (int i = 0; i < n; i++)
  34.     {
  35.         df.ignore(80, '\n');
  36.         df.get(eil, CPav);
  37.         A[i].pavarde = eil;
  38.         df >> k;
  39.         A[i].bagazoKiekis = k;
  40.         for (int j = 0; j < k; j++)
  41.         {
  42.             df >> tempSvoris;
  43.             A[i].bagazoSvoris += tempSvoris;
  44.         }
  45.     }
  46.     df >> m >> x >> y;
  47.  
  48.     df.close();
  49. }
  50.  
  51. void sprendimas(bagazas A[], int n, int m, int x, int y)
  52. {
  53.     ofstream rf(rezF);
  54.  
  55.     // Kiek keleiviu turi ne daugiau kaip 'm' bagazo vienetu.
  56.     int counter = 0;
  57.     for (int i = 0; i < n; i++)
  58.     {
  59.         if (A[i].bagazoKiekis <= m)
  60.         {
  61.             counter++;
  62.         }
  63.     }
  64.     rf << counter << endl;
  65.  
  66.     // Keliu keleiviu bagazo mase virsija 'x' norma.
  67.     counter = 0;
  68.     for (int i = 0; i < n; i++)
  69.     {
  70.         if(A[i].bagazoSvoris > x)
  71.         {
  72.             counter++;
  73.         }
  74.     }
  75.     rf << counter << endl;
  76.  
  77.     // Keliu keleiviu bagazo mase virsija vidutine bagazo mase.
  78.     counter = 0;
  79.     double vidMase;
  80.     double tempMase = 0;
  81.     for (int i = 0; i < n; i++)
  82.     {
  83.         tempMase += A[i].bagazoSvoris;
  84.         vidMase = tempMase / n;
  85.     }
  86.  
  87.     for (int i = 0; i < n; i++)
  88.     {
  89.         if (A[i].bagazoSvoris > vidMase)
  90.         {
  91.             counter++;
  92.         }
  93.     }
  94.     rf << counter << endl;
  95.  
  96.     // Keleiviu vardai, kuriu bagazo mase skiriasi +- y.
  97.     double maxSvoris = 0;
  98.     for (int i = 0; i < n; i++)
  99.     {
  100.         if (A[i].bagazoSvoris > maxSvoris)
  101.         {
  102.             maxSvoris = A[i].bagazoSvoris;
  103.         }
  104.     }
  105.  
  106.     for (int i = 0; i < n; i++)
  107.     {
  108.         if ((A[i].bagazoSvoris == maxSvoris - y) || (A[i].bagazoSvoris == maxSvoris + y))
  109.         {
  110.             rf << A[i].pavarde << endl;
  111.         }
  112.     }
  113.  
  114.     rf.close();
  115. }
  116.  
  117. void reset(bagazas A[])
  118. {
  119.     for (int i = 0; i < CMax; i++)
  120.     {
  121.         A[i].bagazoSvoris = 0;
  122.     }
  123. }
  124.  
  125. int main ()
  126. {
  127.     bagazas A[CMax];
  128.     int n, k, m, x, y;
  129.  
  130.     reset(A);
  131.     skaitymas(A, n, k, m, x, y);
  132.     sprendimas(A, n, m, x, y);
  133.  
  134.     return 0;
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement