Advertisement
xTheEc0

1. Krepšinis (2012 ITVBE)

Apr 20th, 2015
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.87 KB | None | 0 0
  1. U1.txt
  2. /*
  3. 8
  4. 9 5 7 -5 13 -4 11
  5. 7 5 -3 12 -5 17 -3
  6. 25 7 12 -3 5 -5 7 -5 3
  7. 14 5 12 -3 10 -7 8
  8. 5 1 -40
  9. 33 5 15 -5 9 -3 8
  10. 11 5 -12 8 -5 12 -3
  11. 13 5 3 -4 15 -5 3
  12. */
  13.  
  14. #include <iostream>
  15. #include <iomanip>
  16. #include <fstream>
  17. using namespace std;
  18.  
  19. const char duomF[] = "U1.txt";
  20. const char rezF[] = "U1Rez.txt";
  21. const int CMax = 100;
  22.  
  23. // ----------------------------------------------------------------------------------------------
  24.  
  25. struct krepsininkai {
  26.     int numeris;            // Krepsininko numeris
  27.     bool startinis;
  28.     int max;                // Daugiausia laiko praleide aiksteleje krepsininkai
  29.     int min;                // Daugiausia laiko praleide ant suolelio krepsininkai
  30.     };
  31.  
  32. // ----------------------------------------------------------------------------------------------
  33.  
  34. void reset(krepsininkai A[])
  35. {
  36.     for (int i = 0; i < CMax; i++)
  37.     {
  38.         A[i].numeris = 0;
  39.         A[i].startinis = false;
  40.         A[i].max = 0;
  41.         A[i].min = 0;
  42.     }
  43. }
  44.  
  45. void skaitymas(krepsininkai A[], int &n, int &k)
  46. {
  47.     int startTikr;
  48.     int laikas;
  49.     int kiek;
  50.     ifstream df(duomF);
  51.  
  52.     df >> n;                    // Krepsininku skaicius
  53.     for (int i = 0; i < n; i++)
  54.     {
  55.         df >> k;                // Krepsininko numeris STARTINIAI:  9 13 14 25 33
  56.         A[i].numeris = k;
  57.         df >> kiek;             // Kiek laiku reiksmiu yra
  58.         df >> startTikr;        // Kintamasis skirtas tikrinti ar zaidejas yra startinio penketo sudetyje
  59.         if (startTikr >= 0)
  60.         {
  61.             A[i].startinis = true;
  62.         }
  63.  
  64.         if (A[i].startinis == true)
  65.         {
  66.             for (int j = 1; j < kiek; j++)
  67.             {
  68.                 A[i].max += startTikr;
  69.                 df >> laikas;
  70.                 if (laikas >= 0)
  71.                 {
  72.                     A[i].max += laikas;
  73.                 }
  74.                 else
  75.                 {
  76.                     A[i].min += laikas;
  77.                 }
  78.             }
  79.         }
  80.         else
  81.         {
  82.             for (int j = 1; j < kiek; j++)
  83.             {
  84.                 A[i].min += startTikr;
  85.                 df >> laikas;
  86.                 if (laikas >= 0)
  87.                 {
  88.                     A[i].max += laikas;
  89.                 }
  90.                 else
  91.                 {
  92.                     A[i].min += laikas;
  93.                 }
  94.             }
  95.         }
  96.     }
  97.     df.close();
  98. }
  99.  
  100. void sprendimas(krepsininkai A[], int n)
  101. {
  102.     int startPenketas[5];           // Masyvas skirtas laikyti stariniam penketui
  103.     int startsk = 0;                // Atskiras skaitliukas paminetam masyvui
  104.     int temp;                       // Laikinas kintamasis skirtas rykiavimui
  105.     int maxsk, max = 0;
  106.     int minsk, min = 100;
  107.  
  108.     for (int i = 0; i < n; i++)
  109.     {
  110.         if (A[i].startinis == true)
  111.         {
  112.              startPenketas[startsk] = A[i].numeris;
  113.              startsk++;
  114.         }
  115.  
  116.         if (A[i].max > max) // Didziausio ieskojimas
  117.         {
  118.             maxsk = i;
  119.             max = A[i].max;
  120.         }
  121.  
  122.         if (A[i].min < min) // Maziausio ieskojimas
  123.         {
  124.             minsk = i;
  125.             min = A[i].min;
  126.         }
  127.     }
  128.  
  129.     ofstream rf(rezF);
  130.     for (int i = 0; i < 5; i++)
  131.     {
  132.         for (int j = i; j < 5; j++)
  133.         if (startPenketas[i] > startPenketas[j])
  134.         {
  135.             temp = startPenketas[i];
  136.             startPenketas[i] = startPenketas[j];
  137.             startPenketas[j] = temp;
  138.  
  139.         }
  140.         rf << startPenketas[i] << " ";
  141.     }
  142.     rf << " " << endl;
  143.     rf << A[maxsk].numeris << " " << A[maxsk].max << endl; // Daugiausia
  144.     rf << A[minsk].numeris << " " << A[minsk].min - A[minsk].min - A[minsk].min << endl; // Maziausia
  145.  
  146.  
  147.     rf.close();
  148. }
  149.  
  150. int main()
  151. {
  152.     krepsininkai A[CMax];
  153.     int k, n, startsk;
  154.  
  155.     reset(A);
  156.     skaitymas(A, n, k);
  157.     sprendimas(A, n);
  158.  
  159.     return 0;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement