Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <cstdlib>
- #include <ctime>
- #include <cmath>
- using namespace std;
- #define ellenoriz(x) if (x) pont++; else cout << "a feltetel nem teljesult a " << __LINE__ << ". sorban" << endl
- // innentol...
- struct Auto
- {
- string nev;
- int maxtank;
- double uzemanyag;
- double megtettkm;
- double fogyasztas;
- };
- void tankol(Auto &b, double benzin)
- {
- double c=b.uzemanyag+benzin;
- if(c >= b.maxtank)
- b.uzemanyag = b.maxtank;
- else
- b.uzemanyag+=benzin;
- }
- void halad(Auto &a, double b)
- {
- double c=((a.uzemanyag/a.fogyasztas)*100);
- if(b>=c)
- {
- a.megtettkm += c;
- a.uzemanyag = 0;
- }
- else
- {
- a.megtettkm+=b;
- a.uzemanyag-=((b/100)*a.fogyasztas);
- }
- }
- Auto tavverseny_azaz_addig_mennek_amig_ki_nem_fogynak_de_elotte_lenullazzak_a_kilometerorat(vector<Auto> &autok)
- {
- unsigned int i;
- for( i = 0; i < autok.size(); i++ )
- {
- autok[i].megtettkm = 0;
- halad(autok[i],20000); //autok[i].megtettkm = ((autok[i].uzemanyag/autok[i].fogyasztas)*100);
- }
- int hely = 0;
- double max_ut = 0;
- for(i = 0; i < autok.size(); i++)
- {
- if (max_ut < autok[i].megtettkm)
- {
- max_ut = autok[i].megtettkm;
- hely = i;
- }
- }
- return autok[hely];
- }
- // ...idaig lehet irni
- int main() {
- srand(time(0));
- int pont = 0;
- Auto a;
- a.nev = "Ferrari"; // A jármű típusa
- a.maxtank = 86; // Az üzemanyag tartály mérete
- a.uzemanyag = 13.5; // Az aktuális üzemanyag mennyiség
- a.megtettkm = 0; // Az eddig megtett km-rek száma
- a.fogyasztas = 13.3; // A jármű fogyasztása l/100km-ben megadva
- //fabs(): valós számok abszolútértéke
- ellenoriz( a.nev == "Ferrari" && a.maxtank == 86 && fabs(a.uzemanyag-13.5)<0.01 && a.megtettkm == 0 && fabs(a.fogyasztas-13.3)<0.01 );
- tankol( a, 50 );
- ellenoriz( fabs(a.uzemanyag-63.5) < 0.01 );
- halad( a, 350 );
- ellenoriz( a.megtettkm == 350 && fabs(a.uzemanyag-16.95) < 0.01 );
- tankol( a, 100 );
- ellenoriz( a.uzemanyag == 86 );
- halad( a, 1000 );
- ellenoriz( fabs(a.megtettkm-996.617) < 0.01 && a.uzemanyag == 0 );
- vector<Auto> autok;
- Auto a1; a1.nev="Opel"; a1.maxtank=40; a1.uzemanyag=35; a1.megtettkm=10525; a1.fogyasztas=10.1;
- Auto a2; a2.nev="Toyota"; a2.maxtank=50; a2.uzemanyag=45; a2.megtettkm=5671; a2.fogyasztas=8.6;
- Auto a3; a3.nev="Volkswagen"; a3.maxtank=35; a3.uzemanyag=30; a3.megtettkm=36715; a3.fogyasztas=6.3;
- autok.push_back( a1 );
- autok.push_back( a2 );
- autok.push_back( a3 );
- Auto gyoztes = tavverseny_azaz_addig_mennek_amig_ki_nem_fogynak_de_elotte_lenullazzak_a_kilometerorat( autok );
- ellenoriz( gyoztes.nev == a2.nev && autok[0].uzemanyag == 0 && autok[1].uzemanyag == 0 && autok[2].uzemanyag == 0 );
- // 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.
- float titok = sqrt(float(int(autok[2].megtettkm+0.5)));
- titok -= floor(titok);
- ellenoriz( fabs(titok-0.817) < 0.001 );
- cout << "\n" << pont << "/7 pont" <<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement