xTheEc0

4. Mėgstamiausi skaičiai

Jun 16th, 2015
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.69 KB | None | 0 0
  1. //1.txt
  2. /*
  3. 1 6
  4. 2 8
  5. 3 5
  6. 4 3
  7. 5 5
  8. 6 8
  9. 7 6
  10. 8 3
  11. 9 5
  12. 10 1
  13. 8 6 2
  14. 1 10
  15. */
  16.  
  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[] = "1rez.txt";
  26. const int CMax = 15;
  27.  
  28. struct skaiciai {
  29.     string vardas;
  30.     int skaicius[50];
  31. };
  32.  
  33. void skaitymas(skaiciai A[], int &n, int &k)
  34. {
  35.     ifstream df(duomF);
  36.     char eil[CMax+1];
  37.     df >> n >> k;
  38.  
  39.     for (int i = 0; i < n; i++)
  40.     {
  41.         df.ignore(80, '\n');
  42.         df.get(eil, CMax);
  43.         A[i].vardas = eil;
  44.         for (int j = 0; j < k; j++)
  45.         {
  46.             df >> A[i].skaicius[j];
  47.         }
  48.     }
  49. }
  50.  
  51. void kiek(skaiciai A[], int kiekis[], int n, int k)
  52. {
  53.     int counter = 0;
  54.  
  55.     for (int z = 1; z < 11; z++)
  56.     {
  57.         for (int i = 0; i < n; i++)
  58.         {
  59.             for (int j = 0; j < k; j++)
  60.             {
  61.                 if (A[i].skaicius[j] == z)
  62.                 {
  63.                 counter ++;
  64.                 }
  65.             }
  66.         }
  67.         kiekis[z] = counter;
  68.         counter = 0;
  69.     }
  70. }
  71.  
  72. void daugiausia(int kiekis[], int didziausi[], int &max)
  73. {
  74.     for (int i = 1; i < 11; i++)
  75.     {
  76.         didziausi[i] = 0;
  77.         if (kiekis[i] > max)
  78.         {
  79.             max = kiekis[i];
  80.         }
  81.     }
  82.  
  83.     for (int i = 1; i < 11; i++)
  84.     {
  85.         if (kiekis[i] == max)
  86.         {
  87.             didziausi[i] = kiekis[i];
  88.         }
  89.     }
  90. }
  91.  
  92. void maziausia(int kiekis[], int maziausi[], int &min)
  93. {
  94.     for (int i = 1; i < 11; i++)
  95.     {
  96.         maziausi[i] = 0;
  97.         if (kiekis[i] < min)
  98.         {
  99.             min = kiekis[i];
  100.         }
  101.     }
  102.  
  103.     for (int i = 10; i > 0; i--)
  104.     {
  105.         if (kiekis[i] == min)
  106.         {
  107.             maziausi[i] = kiekis[i];
  108.         }
  109.     }
  110. }
  111.  
  112. void rezultatas(int kiekis[], int didziausi[], int maziausi[], int max, int min)
  113. {
  114.     ofstream rf(rezF);
  115.     for (int i = 1; i < 11; i++)
  116.     {
  117.         cout << i << " " << kiekis[i] << endl;
  118.         rf << i << " " << kiekis[i] << endl;
  119.     }
  120.  
  121.     rf << max;
  122.     for (int i = 10; i > 0; i--)
  123.     {
  124.         if (didziausi[i] != 0)
  125.         {
  126.             rf << " " << i;
  127.  
  128.         }
  129.     }
  130.  
  131.     rf << endl << min;
  132.     for (int i = 1; i < 11; i++)
  133.     {
  134.         if (maziausi[i] != 0)
  135.         {
  136.             rf << " " << i;
  137.         }
  138.     }
  139.  
  140.     rf.close();
  141. }
  142.  
  143. int main()
  144. {
  145.     skaiciai A[CMax];
  146.     int kiekis[11], didziausi[11], maziausi[11];
  147.     int max = 0, min = 999;
  148.     int n, k;
  149.  
  150.     skaitymas(A, n, k);
  151.     kiek(A, kiekis, n, k);
  152.     daugiausia(kiekis, didziausi, max);
  153.     maziausia(kiekis, maziausi, min);
  154.     rezultatas(kiekis, didziausi, maziausi, max, min);
  155.  
  156.     return 0;
  157. }
Advertisement
Add Comment
Please, Sign In to add comment