Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak zabronić wpisywania liter w programie

Ostatnio zmodyfikowano 2014-02-02 14:35
Autor Wiadomość
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-01-29 16:45:17
Dobrze a mógłby mi ktoś dokładniej wytłumaczyć o co chodzi w tym fragmencie kodu bo ciężko jest mi go zrozumieć mimo że czytałem już o tym w kursie na tej stronie i nie tylko tutaj to nadal ciężko mi go przyswoić.Oto fragment tego kodu który jest zresztą wykorzystany w tym programie:

{ M: cout << "Wprowadz liczbe calkowita" << endl;
        cin >> liczba;
/* o poniższą część kodu mi chodzi a dokładniej oto czemu np. jest cin.clear jako pierwsze oraz czemu pożniej jest cin.ignore i czemu akurat jest w nawiasie podana liczba 50 ?*/
        while( cin.fail() )
        {
            cin.clear();
            cin.ignore( 50, '\n' );
            cout << "Liczba musi byc liczba calkowita: ";
            cin >> liczba;
        }
    }
    cout << "Wprowadz druga liczbe calkowita" << endl;
    cin >> cyfra;
    while( cin.fail() )
    {
        cin.clear();
        cin.ignore( 50, '\n' );
        cout << "Liczba musi byc liczba calkowita: ";
        cin >> liczba;
    }
   
    suma = liczba * cyfra;
// Oraz o tę część kodu mi chodzi którą ciężko mi zrozumieć wogóle. 
    good = cin.good();
    bad = cin.bad();
    cin.clear();
    cin.sync();

W miejscach które ująłem komentarzem oznaczają fragment kodu którego to właśnie kompletnie nie rozumiem i bardzo proszę o jakieś dokładne wytłumaczenie mi tego najlepiej krok po kroku tak żebym szybciej to zrozumiał czemu tak jest a nie inaczej .
P-103527
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-01-29 21:51:48
Jeszcze raz proszę o pomoc.
Odświeżam
P-103551
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-01-30 12:30:04
Czemu także ja wpiszę literę zamiast liczby i dopiero pożniej wpisze liczbę a pożniej jak ponownie powie mi żebym wprowadził drugą liczbę całkowita wprowadzę literę a dopiero pożniej liczbę tak jak to ma być to wynik zwróci mi 0 ?
P-103570
alixir
» 2014-01-30 13:03:07
W sumie to chyba rozumiem dlaczego nic nie rozumiesz. 
Ty posługujesz się jakimś innym językiem. Patrzę , patrzę i nie mogę nic zrozumieć z tego co piszesz.
Piszę to oczywiście żartobliwie a nie uszczypliwie.
P-103574
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-01-30 13:19:21
A dokładniej to czego nie możesz zrozumieć.Chodzi mi oto że jak program poprosi mnie o wprowadzenie pierwszej liczby całkowitej i ja celowo zamiast liczby wprowadzę jakąś literę i dopiero pożniej gdy mi się wyświetli napis "Liczba musi być liczbą całkowitą"  wprowadzę poprawnie liczbę i pożniej gdy program poprosi mnie abym wprowadził drugą liczbę całkowitą a ja znowu zamiast liczby wprowadzę literę i wyświetli mi się komunikat "Liczba musi być liczbą całkowitą" i dopiero teraz wprowadzę liczbę to program wyświetli jako wynik mnożenia tych dwóch liczb liczbę 0 nie wiem dlaczego.
Czy już rozumiesz ?
P-103578
alixir
» 2014-01-30 13:30:16
Od razu lepiej. Ale ogólnie nie widzę finalnego kodu na którym testujesz. Ten z poprzedniej strony po drobnych przeróbkach działa poprawnie i nie widzę efektu o którym mówisz.
P-103581
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-01-30 13:34:47
Cieszę się że już rozumiesz.A oto kod który obecnie testuję i który nadal nie działa po wielu próbach mojej przeróbki:

#include <iostream>
#include <windows.h>
using namespace std;
main ()

{
    bool good, bad;
    float liczba,cyfra;
    float suma ;


{   M: cout << "Wprowadz liczbe calkowita" << endl;
    cin >> liczba  ;
     while( cin.fail() )
    {
        cin.clear();
        cin.ignore( 50, '\n' );
        cout << "Liczba musi byc liczba calkowita:\nWprowadz ponownie liczbe:"<<endl;
        cin.clear ();
        cin.sync();
        cin >> liczba;

    }

    cout <<"Wprowadz druga liczbe calkowita" <<endl;
    cin >> cyfra  ;
    while( cin.fail() )
    {
        cin.clear();
        cin.ignore( 50, '\n' );
        cout << "Liczba musi byc liczba calkowita:\nWprowadz ponownie liczbe:"<<endl;
        cin.clear ();
        cin.sync();
        cin >> liczba;
    }

    suma =liczba * cyfra ;
    good = cin.good();
    bad = cin.bad();
    cin.clear();
    cin.sync();
}


    if (suma < 100)

    {
        cout << "Suma dwoch liczb ktore podales nie przekracza 100" <<endl;
        cout << "Wynik mnozenia tych dwoch liczb wynosi : " <<suma<< endl;
        cout << "Znakomicie" <<endl;
        Sleep(2000) ;
        goto M ;
        return 1;
    }

    else
    {


        cout << "Suma liczb przekracza 100" <<endl;
        cout << "Wynik nie zostanie zwrocony" <<endl;
        cout << "Sprobuj ponownie" <<endl;
        Sleep(2000) ;
        goto M;
P-103584
alixir
» 2014-01-30 13:36:57
W dwóch pętlach wczytujesz pod tą samą zmienną:
cin >> liczba;
P-103585
1 2 « 3 » 4 5 6
Poprzednia strona Strona 3 z 6 Następna strona