Advertisement
xTheEc0

2. Kauliukai (2012 ITVBE)

Apr 20th, 2015
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.77 KB | None | 0 0
  1. U2.txt
  2. /*
  3. 2 3
  4. Hermis    6 1 2
  5. Hera      2 6 6
  6. */
  7.  
  8. #include <iostream>
  9. #include <iomanip>
  10. #include <fstream>
  11. using namespace std;
  12.  
  13. const char duomF[] = "U2.txt";
  14. const char rezF[] = "U2Rez.txt";
  15. const int CPav = 10;
  16.  
  17. // ----------------------------------------------------------------------------------------------
  18.  
  19. struct Dievas {
  20.     string vardas;                                  // Dievo vardas
  21.     int taskai;                                     // Surinkti taskai
  22.     int lyginiai;                                   // Lyginiu metimu skaicius
  23. };
  24.  
  25. Dievas *dievai;
  26. int kaul_sk, diev_sk;                               // Globalus kintamieji
  27.  
  28. // ----------------------------------------------------------------------------------------------
  29.  
  30. // Funkcijos
  31. // Funkcija tikrinanti ar skaicius lyginis
  32. bool isEven(int number) {
  33.         if ( number % 2 == 0)
  34.                 return true;
  35.         else return false;
  36.  
  37. }
  38.  
  39. // Funkcija kuri apskaiciuoja dievu taskus ir randa laimetoja
  40. int rastiLaimetoja() {
  41.     int win_points = dievai[0].taskai,
  42.     win_even = dievai[0].lyginiai,
  43.     win_id = 0;
  44.         for (int i = 1; i < diev_sk; i++)
  45.         {
  46.                 if (win_points < dievai[i].taskai)  // Jeigu laimima tasku persvara
  47.                 {
  48.                         win_id = i;
  49.                         win_points = dievai[i].taskai;
  50.                         win_even = dievai[i].lyginiai;
  51.                 }
  52.                 else if (win_points == dievai[i].taskai && win_even < dievai[i].lyginiai) // Jeigu reikia nustatyti laimetoja pagal lyginiu metimu skaiciu
  53.                 {
  54.                         win_id = i;
  55.                         win_points = dievai[i].taskai;
  56.                         win_even = dievai[i].lyginiai;
  57.                 }
  58.         }
  59.         return win_id;
  60. }
  61.  
  62. // Funkcija skaitanti is failo
  63. void skaitymas() {
  64.     ifstream df(duomF);
  65.     char eil[CPav+1];                               // char masyvas naudojamas nuskaityti 10 vardo simboliu
  66.  
  67.     df >> diev_sk;                                  // Dievu skaicius
  68.     df >> kaul_sk;                                  // Kauliuku skaicius
  69.     int points;                                     // Kaupiamas tasku skaicius
  70.     dievai = new Dievas[diev_sk];                   // Sukuriamas masyvas kurio dydis yra diev_sk naudojant new.
  71.     for (int i = 0; i < diev_sk; i++)
  72.     {
  73.         df.ignore(80, '\n');                        //
  74.         df.get(eil, CPav);                          // Nuskaito dievo varda
  75.         dievai[i].vardas = eil;                     // Varda nukelia y masyva
  76.         dievai[i].lyginiai = 0;                     // Pries rasant reiksme masyvo reiksmes nunulinamos
  77.         dievai[i].taskai = 0;                       // Pries rasant reiksme masyvo reiksmes nunulinamos
  78.         for (int j = 0; j < kaul_sk; j++)
  79.         {
  80.             df >> points;
  81.             if(isEven(points))                      // Tikrinama ar lyginis kauliuko skaicius
  82.             {
  83.                 dievai[i].taskai += points;         // Jeigu taskai yra lyginiai jie pridedami
  84.                 dievai[i].lyginiai++;
  85.             }
  86.             else dievai[i].taskai -= points;        // Jeigu taskai ne lyginiai jie atimami
  87.         }
  88.     }
  89. }
  90.  
  91. // Funkcija rasanti atsakyma i faila
  92. void irasyti(int win) {
  93.     ofstream rf(rezF);
  94.     rf << dievai[win].vardas << " " << dievai[win].taskai;
  95.     rf.close();
  96. }
  97.  
  98. // ----------------------------------------------------------------------------------------------
  99.  
  100. int main () {
  101.     skaitymas();                    // Nuskaitomas failas
  102.     int win = rastiLaimetoja();     // Randamas nugaletojas
  103.     irasyti(win);                   // Irasomas atsakymas i faila
  104.     delete[] dievai;                // Istrinamas masyvas taupant atminty
  105.  
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement