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-30 21:29:53
Odswiezam
P-103645
pekfos
» 2014-01-30 21:56:35
Wstaw pętlę nieskończoną i, w odpowiednich miejscach, break i/lub continue. To najłatwiejszy sposób bez przerabiania kodu. Najlepiej zacznij coś samemu robić. Wygląda na to, że zadajesz pytanie i bezczynnie (nie licząc odświeżania) czekasz. Nikt nie odpowiada - jest jakiś powód. Na forum są mechanizmy do automatycznego 'odświeżania' tematów. Dodając takie bezsensowne i nic nie wnoszące posty prędzej doprowadzisz do wyrzucenia tematu, niż do przyspieszenia pomocy. Zwłaszcza, że dyskusja zeszła z tematu.
P-103648
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-02-01 12:59:37
Zrobiłem coś takiego na zasadzie kolejnej instrukcji warunkowej if a jak miało by to wyglądać z pętlą i instrukcjami continue i break ?
Oto mój obecny kod :

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

{
    char wybor;
    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 >> 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 >> cyfra;
        }
       
        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;
        cout << "Chcesz kontynuowac (t/n)" << endl;
        cin >> wybor;
        if( wybor != 'n' )
        {
           
            cout << "Wybrales kontynuacje programu" << endl;
            Sleep( 2000 );
            goto M;
        }
       
       
       
       
    }
   
    else
    {
        cout << "Suma liczb przekracza 100" << endl;
        cout << "Wynik nie zostanie zwrocony" << endl;
        cout << "Sprobuj ponownie" << endl;
        Sleep( 2000 );
        goto M;
    }
   
}
P-103743
leon_w
» 2014-02-01 14:10:26
Bierzesz całą instrukcję, która ma sie powtarzać w klamry. Przed klamrą otwirającą dajesz np:
while( 1 )
 (to jest pętla nieskończona, ponieważ jej warunek jest zawsze spełniony).
W
C/C++
if( wybor != 'n' )
{
   
    cout << "Wybrales kontynuacje programu" << endl;
    Sleep( 2000 );
    goto M;
}
 zamiast "goto M;" dajesz "continue;" (wraca na początek pętli), a za klamrą dodajesz:
C/C++
else
     break;
zakańcza pętle.

P-103752
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-02-01 17:55:12
Zrobiłem coś takiego jednak nie działa to poprawnie.Nie wiem jak zagnieżdżać te pętla mam.
Zrobiłem to tak ale jest to żle  i czy mógłbyś mi napisać gdzie dokładnie tę instrukcję zamieścić w kodzie bo mam z tym problem niestety.
C/C++
#include <iostream>
#include <windows.h>
using namespace std;
main()
{
    char wybor;
    bool good, bad;
    float liczba, cyfra;
    float suma;
   
    while( 1 )
    {
       
        { 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 >> 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 >> cyfra;
            }
           
            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;
            cout << "Chcesz kontynuowac (t/n)" << endl;
            cin >> wybor;
           
            cout << "Wybrales kontynuacje programu" << endl;
            Sleep( 2000 );
            continue;
        }
        else
             break;
       
    }
   
    else
    {
       
       
        cout << "Suma liczb przekracza 100" << endl;
        cout << "Wynik nie zostanie zwrocony" << endl;
        cout << "Sprobuj ponownie" << endl;
        Sleep( 2000 );
        goto M;
    }
   
}
P-103772
alixir
» 2014-02-01 19:11:35
Dalej gryzie mnie w oczy goto i label M:
Nie wiem skąd masz takie niedobre nawyki, ale zacznij może od przeczytania kursów z tej strony, a myślę, że twoje problemy rozwiążą się same.
P-103776
leon_w
» 2014-02-02 10:11:30
No masakra trzeba przyznać. Pomyśl trochę logicznie.
Pytasz użytkownika czy chce kontynuować, zapisujesz jego odpowiedź do zmiennej i nic z nią nie robisz. Dlaczego usunąłeś tego ifa?
Pętla nieskończona jest dobra, tylko klamrę zamykającą daj za ostatnim else (na samym końcu, przed klamrą zamykającą funkcje main).

Co do ifa którego usunąłeś:
Pytasz użytkownika czy chce kontynuować, odpowiedź zapisujesz do zmiennej.
Jeżeli odpowiedź jest różna od 'n', kontynuujesz działanie pętli ( continue).
Jeżeli odpowiedź jest równa 'n'(nie jest różna od 'n'), zakańczasz działanie pętli (break).
P-103830
damianlxlx5
Temat założony przez niniejszego użytkownika
» 2014-02-02 14:28:23
Dobra udało mi się napisać coś takiego jednak nie rozumiem pewnej rzeczy.
Najpierw przedstawię może mój kod i wiersz którego nie rozumiem przedstawię za pomocą komentarza.
C/C++
#include <iostream>
#include <windows.h>
using namespace std;
main()

{
    char wybor;
    bool good, bad;
    float liczba, cyfra;
    float suma;
   
    while( 1 )
    {
       
       
        { 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 >> 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 >> cyfra;
            }
           
            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;
            cout << "Chcesz kontynuowac (t/n)" << endl;
            cin >> wybor;
            if( wybor != 'n' )
            {
               
                cout << "Wybrales kontynuacje programu" << endl;
                Sleep( 2000 );
                continue;
            }
            else( wybor == 'n' ); //Chodzi mi o ten wiersz a dokładniej oto dlaczego jak
            //jak nie wstawie tam średnika po tym co jest w nawiasie po //instrukcji else to kompilator zgłosi błąd i nie pozwoli przekompilować kodu.
            //Wydaje mi się że po instrukcji if czy else nie trzeba wstawiać średnika czy się
            //mylę ? 
            cout << "Wybrales zakonczenie programu" << endl;
            break;
        }
       
        else
        {
            cout << "Suma liczb przekracza 100" << endl;
            cout << "Wynik nie zostanie zwrocony" << endl;
            cout << "Sprobuj ponownie" << endl;
            Sleep( 2000 );
            goto M;
        }
    }
}
P-103861
1 2 3 4 « 5 » 6
Poprzednia strona Strona 5 z 6 Następna strona