Keresés

Új hozzászólás Aktív témák

  • dobragab

    addikt

    válasz bandi0000 #3659 üzenetére

    Naakkor sorolom.

    - A bemenet ellenőrzésével erősen ellenjavallott ennyit tökölni. Ha valami nem stimmel, kiírni, hogy szar a bemenet és rage quit. Konzolos program úgyse lesz sose user-friendly, de így elveszik a lényeg a sok marhaság között.

    - Ha a cin.clear() és a cin.sync() nélkül nem működik egy algoritmus, akkor szar. Ráadásul nem feltétlenül végtelen ciklus, ha kihagyod, csak bizonyos esetekben. Megint csak az van, hogy ne próbálj user-friendly lenni.

    - for (i2=db; i2<db; i2++)
    Ez így ebben a formában nem csinál semmit. És nem is tudok rájönni, hogy hány darabot kéne randomgenerálni.

    - int i2, db, ossz2=0, jegy[20], jelesdb=0;
    Ezért dupla nyers hal jár. Egyrészt egy sor, egy deklaráció! Másrészt minden változót akkor deklarálj, amikor szükséged van rá, sose előbb! Ez C++, és kb. minden C89-től különböző nyelv és Linus-tól különböző programozó megengedi.

    - Tessék mán for(int i-t írni, akkor nem kell számozni a ciklusváltozókat (i2). Lásd előző pont.

    - A végén az átlagszámítós - ötösszámolós ciklus a lényege az egésznek, azt kellett volna faszán elmagyaráznia a tanárnak. És nem a C++-specifikus beolvasós trükközgetésekkel terhelni az agyatokat, az égvilágon semmi értelme. Feltételezem, hogy nem magyarázta el a lehető legérthetőbben, mert akkor külön for ciklust kaptak volna, ahogy illik.

    Így röviden ennyi, ami a kódot érinti.

    Na és akkor a kérdésed.

    A cin belső flagekben tárolja, hogy volt-e valami hiba a beolvasás során, például ha te számot akartál beolvasni, de a júzer azt írta be, hogy hesstegfoskód, akkor a cin nem dob hibát, hanem megjegyzi, hogy valami büdös volt, és te akkor ellenőrzöd, amikor akarod. Ezt a cin.fail()-lel, meg még két hasonló függvénnyel tudod megtenni, mindegyik máskor jelez. Ha a következő beolvasás sikerül, akkor is megmarad a flag, tehát nem írja felül a hibás állapotot. Vagy csak annyit írsz a cin.fail() helyett, hogy cin.
    if(cin) // nem kell ide semmi, ilyenkor igaz-hamissá konvertálódik
    cout << "Minden rendben volt.";
    else
    cout << "Szar van a palacsintában.";

    Ezeket a flageket a clear()-rel tudod kipucolni, hogy ha az előző beolvasás elfailelt, akkor is lásd, hogy a következő jó-e.

Új hozzászólás Aktív témák