Advertisement
xTheEc0

Savarankiškas darbas 2015 02 10 Needs fixing

Feb 24th, 2015
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.08 KB | None | 0 0
  1. /* 1.txt
  2. 3
  3. 4
  4. Katinas Batuotas     4 25
  5. Katinas Ratuotas     3 59
  6. Katinas Rainas       4 15
  7. Katinas Jaunas       6 20
  8. 2
  9. Katinas Rudas        6 45
  10. Katinas Juodas       3 55
  11. 5
  12. Katinas Baltas       3 58
  13. Katinas Gauruotas    4 2
  14. Katinas Plikas       4 5
  15. Katinas Ilgas        4 4
  16. Katinas Trumpas      4 6
  17. */
  18.  
  19. #include <iostream>
  20. #include <iomanip>
  21. #include <fstream>
  22. using namespace std;
  23.  
  24. const char duomF[] = "1.txt";
  25. const char rezF[] = "rez1.txt";
  26. const int CMax = 51;
  27. const int CPav = 20;
  28.  
  29. struct varzybos
  30. {
  31.     string pav;
  32.     int min;
  33.     int sek;
  34.     int grupe;
  35.     int dalyviai;
  36. };
  37.  
  38. struct laimetojai
  39. {
  40.     string pav;
  41.     int min;
  42.     int sek;
  43.     int grupe;
  44. };
  45.  
  46. void skaitymas(varzybos A[] , int &max, int &k)
  47. {
  48.     ifstream df(duomF);
  49.     char eil[CPav+1];
  50.     int n;
  51.  
  52.     df >> k;
  53.     for (int i = 0; i < k; i++)
  54.     {
  55.         df >> n;
  56.         for (int j = max; j < n+max; j++)
  57.         {
  58.             df.ignore(80, '\n');
  59.             df.get(eil, CPav);
  60.             A[j].pav = eil;
  61.             df >> A[j].min >> A[j].sek;
  62.             A[j].grupe = i+1;
  63.             A[j].dalyviai = n;
  64.         }
  65.         max += n;
  66.     }
  67. }
  68.  
  69. void rykiavimas(varzybos A[], int max)
  70. {
  71.     string tempn;
  72.     int tempmin;
  73.     int tempsek;
  74.  
  75.     for (int i = 0; i < max-1; i++)
  76.     {
  77.         for (int j = i; j < max; j++)
  78.         {
  79.             if (A[i].grupe == A[j].grupe)
  80.             {                             // Kiekvienos grupes greiciausi.
  81.                 if (A[i].min > A[j].min) // Rykiavimas pagal laika (min).
  82.                 {
  83.                     tempn = A[j].pav; tempmin = A[j].min; tempsek = A[j].sek;
  84.                     A[j].pav = A[i].pav; A[j].min = A[i].min; A[j].sek = A[i].sek;
  85.                     A[i].pav = tempn; A[i].min = tempmin; A[i].sek = tempsek;
  86.                 }
  87.                 else if (A[i].min == A[j].min && A[i].sek > A[j].sek) // Rykiavimas pagal sekundes, jeigu minutes sutampa.
  88.                 {
  89.                     tempn = A[j].pav; tempmin = A[j].min; tempsek = A[j].sek;
  90.                     A[j].pav = A[i].pav; A[j].min = A[i].min; A[j].sek = A[i].sek;
  91.                     A[i].pav = tempn; A[i].min = tempmin; A[i].sek = tempsek;
  92.                 }
  93. }}}}
  94.  
  95. void sprendimas(varzybos A[], laimetojai L[], int max, int &maxLaimetoju, int k)
  96. {
  97.     for (int i = 0; i < k; i++) // Visu varzybu greiciausi.
  98.     {
  99.         for (int j = 0; j < A[i].dalyviai / 2; j++)
  100.         {
  101.             L[maxLaimetoju].pav = A[j].pav;
  102.             L[maxLaimetoju].min = A[j].min;
  103.             L[maxLaimetoju].sek = A[j].sek;
  104.             maxLaimetoju++;
  105.         }
  106.     }
  107. }
  108.  
  109. int main ()
  110. {
  111.     varzybos A[CMax]; laimetojai L[CMax];
  112.     int k, n;
  113.     int max = 0, maxLaimetoju = 0;
  114.  
  115.     skaitymas(A, max, k);
  116.     rykiavimas(A, max);
  117.     sprendimas(A, L, max, maxLaimetoju, k);
  118.  
  119.     ofstream rf(rezF);
  120.     //for (int i = 0; i < maxLaimetoju; i++) cout << L[i].pav << L[i].min << " " << L[i].sek << endl;
  121.  
  122.     for (int i = 0; i < maxLaimetoju; i++) rf << L[i].pav << L[i].min << " " << L[i].sek << endl;
  123.     rf.close();
  124.     return 0;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement