Hirdetés

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

  • amargo

    addikt

    válasz Ramius #113 üzenetére

    A Scanf-el is meg lehet csinálni, csak én már untam, hoyg annyi mindent kell lekezelni sokszor.. Pointerekkel lehetne még igazán jól lekezelni a dolgot, hogy ne is legyen pazarló, de amilyen szinten a tanárok elvárják, ahhoz most ez is jó:

    //---------------------------------------------------------------------
    bool IsDigit(char ch)
    {
    return ((ch >= '0' && ch <= '9') || ch == '.');
    }//bool IsDigit(char ch)
    //---------------------------------------------------------------------
    template <class Var>
    void getNum(Var &n, Var lob, Var hib) //lob az alsó határ
    {
    bool error;
    do
    {
    string str;
    n = 0;
    error = false;
    cin >> str;
    for(int h = 0; h < (signed)str.length(); h++)
    {
    if(!IsDigit(str[ h ]) || str[ 0 ] == '-' )
    {
    error = true;
    cout << ''Hiba, Szamot adjon meg!\n'' << endl;
    break;
    }
    }
    if(!error)
    {
    n = (Var)atoi(str.c_str());
    }
    if((n < lob || n >= hib) || error) //Nem engedjük meg a hib-ig menni és a lob-nál nagyobbnak kell lennie!
    {
    cout << ''Hibas a bevitt ertek\n'' << lob << '' -tol, '' << hib << '' -ig. Adja meg a szamot.'' << endl;
    error = true;
    }
    }while( !(lob <= n) || error);
    }//int getNum()


    Szerk: az előnye, hogy lebegőpontos számokat is képes kezelni.. Nem kell hozzá átírkálni.

    [Szerkesztve]

    “The workdays are long and the weekend is short? Make a turn! Bike every day, bike to work too!”

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