Advertisement
tamtamtamtam

c++ 2016 beugro a

Jan 21st, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <cstdlib>
  5. #include <ctime>
  6. #include <cmath>
  7.  
  8. using namespace std;
  9.  
  10. #define ellenoriz(x) if (x) pont++; else cout << "a feltetel nem teljesult a " << __LINE__ << ". sorban" << endl
  11.  
  12. // innentol...
  13. struct Auto
  14. {
  15.     string nev;
  16.     int maxtank;
  17.     double uzemanyag;
  18.     double megtettkm;
  19.     double fogyasztas;
  20. };
  21.  
  22. void tankol(Auto &b, double benzin)
  23. {
  24.     double c=b.uzemanyag+benzin;
  25.     if(c >= b.maxtank)
  26.         b.uzemanyag = b.maxtank;
  27.         else
  28.     b.uzemanyag+=benzin;
  29. }
  30.  
  31. void halad(Auto &a, double b)
  32. {
  33.         double c=((a.uzemanyag/a.fogyasztas)*100);
  34.         if(b>=c)
  35.         {
  36.             a.megtettkm += c;
  37.             a.uzemanyag = 0;
  38.         }
  39.         else
  40.         {
  41.         a.megtettkm+=b;
  42.         a.uzemanyag-=((b/100)*a.fogyasztas);
  43.         }
  44. }
  45.  
  46. Auto tavverseny_azaz_addig_mennek_amig_ki_nem_fogynak_de_elotte_lenullazzak_a_kilometerorat(vector<Auto> &autok)
  47. {
  48.     unsigned int i;
  49.     for( i = 0; i < autok.size(); i++ )
  50.     {
  51.         autok[i].megtettkm = 0;
  52.         halad(autok[i],20000);      //autok[i].megtettkm = ((autok[i].uzemanyag/autok[i].fogyasztas)*100);
  53.     }
  54.     int hely = 0;
  55.     double max_ut = 0;
  56.     for(i = 0; i < autok.size(); i++)
  57.     {
  58.         if (max_ut < autok[i].megtettkm)
  59.         {
  60.             max_ut = autok[i].megtettkm;
  61.             hely = i;
  62.         }
  63.     }
  64.  
  65.     return autok[hely];
  66. }
  67. // ...idaig lehet irni
  68.  
  69. int main() {
  70.     srand(time(0));
  71.     int pont = 0;
  72.  
  73.     Auto a;
  74.     a.nev = "Ferrari";      // A jármű típusa
  75.     a.maxtank = 86;         // Az üzemanyag tartály mérete
  76.     a.uzemanyag = 13.5;     // Az aktuális üzemanyag mennyiség
  77.     a.megtettkm = 0;        // Az eddig megtett km-rek száma
  78.     a.fogyasztas = 13.3;    // A jármű fogyasztása l/100km-ben megadva
  79.     //fabs(): valós számok abszolútértéke
  80.     ellenoriz( a.nev == "Ferrari" && a.maxtank == 86 && fabs(a.uzemanyag-13.5)<0.01 && a.megtettkm == 0 && fabs(a.fogyasztas-13.3)<0.01 );
  81.  
  82.     tankol( a, 50 );
  83.     ellenoriz( fabs(a.uzemanyag-63.5) < 0.01 );
  84.  
  85.     halad( a, 350 );
  86.     ellenoriz( a.megtettkm == 350 && fabs(a.uzemanyag-16.95) < 0.01 );
  87.  
  88.     tankol( a, 100 );
  89.     ellenoriz( a.uzemanyag == 86 );
  90.  
  91.     halad( a, 1000 );
  92.     ellenoriz( fabs(a.megtettkm-996.617) < 0.01 && a.uzemanyag == 0 );
  93.  
  94.     vector<Auto> autok;
  95.     Auto a1; a1.nev="Opel";         a1.maxtank=40; a1.uzemanyag=35; a1.megtettkm=10525; a1.fogyasztas=10.1;
  96.     Auto a2; a2.nev="Toyota";       a2.maxtank=50; a2.uzemanyag=45; a2.megtettkm=5671;  a2.fogyasztas=8.6;
  97.     Auto a3; a3.nev="Volkswagen";   a3.maxtank=35; a3.uzemanyag=30; a3.megtettkm=36715; a3.fogyasztas=6.3;
  98.     autok.push_back( a1 );
  99.     autok.push_back( a2 );
  100.     autok.push_back( a3 );
  101.     Auto gyoztes = tavverseny_azaz_addig_mennek_amig_ki_nem_fogynak_de_elotte_lenullazzak_a_kilometerorat( autok );
  102.     ellenoriz( gyoztes.nev == a2.nev && autok[0].uzemanyag == 0 && autok[1].uzemanyag == 0 && autok[2].uzemanyag == 0 );
  103.  
  104.     // Ha az elozot jol kiszamoltad, akkor ez automatikusan teljesulni fog. Direkt bonyolult, hogy ne lehessen kitalalni ebbol, hanem rendesen ki kelljen szamolni az elozot. Ne akarj ebbol rajonni, hogy mi kell legyen az eredmeny.
  105.     float titok = sqrt(float(int(autok[2].megtettkm+0.5)));
  106.     titok -= floor(titok);
  107.     ellenoriz( fabs(titok-0.817) < 0.001 );
  108.  
  109.  
  110.     cout << "\n" << pont << "/7 pont" <<endl;
  111.     return 0;
  112.  
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement