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

Jak powrócić do wcześniej wykonywanej instrukcji gdy wystąpił bład

Ostatnio zmodyfikowano 2014-02-03 16:56
Autor Wiadomość
Traxxas
Temat założony przez niniejszego użytkownika
Jak powrócić do wcześniej wykonywanej instrukcji gdy wystąpił bład
» 2014-02-02 16:37:10
Witam.

Mam problem. Jak napisać program aby

1.Wpisuje 1 liczbe
a.Program sprawdza czy to liczba czy litera
b.jeżeli to litera wracam do kroku 1 jeżeli cyfra ide do kroku 2
2.Wpisuje 2 liczbe
a.Program sprawdza czy to liczba czy litera
b.jeżeli to litera wracam do kroku 1 jeżeli cyfra ide do kroku 3
3. ....

C/C++
cout << "Podaj 1 liczbe: ";
cin >> liczba1; // tu po podaniu litery poinformował mnie że podałem litere i z powrotem pojawia się funkcja cin >> liczba1;
stan1 = cin.good();
cout << "\nPodaj 2 liczbe: ";
cin >> liczba2; // tu tak samo
stan2 = cin.good();
cout << "\npodaj co chcesz zrobic\n";
cout << "1 Dodawanie" << endl;
cout << "2 Odejmowanie" << endl;
cout << "3 Mnozenie" << endl;
cout << "4 Dzielenie" << endl;
cout << "0 Exit" << endl;
cin >> x; // i tu też


dodatkowo , jak napisać aby dopiero po wpisaniu słowa "end" konczył pracę a nie dopiero jak wpiszę "0"

P-103878
SeaMonster131
» 2014-02-02 16:53:35
Musisz zastosować pętlę, np
do { } while()
.
P-103879
Deyvin
» 2014-02-02 17:34:33
Spróbuj sam napisać kod z wykorzystaniem właśnie pętli. Czyścisz flagi błędów
cin.clear();
 bufor
cin.sync();
 następnie pobierasz dane do zmiennej, sprawdzasz czy to liczba np.
if( cin.good() )
 no to lecisz dalej, jeśli znak to jeszcze jeden cykl pętli.
P-103881
Traxxas
Temat założony przez niniejszego użytkownika
» 2014-02-02 20:56:45
W miarę zaczynam kminić , dzięki za podpowiedzi.

I jeszcze jedno pytanko. Był taki program co się rysowało róznego prostokąty , można w nich było pisać i łaczyć je ze sobą.Taki plan działania i teraz tak sobie myślę że to super zda egzamin w konstruowaniu kodu programu. C++ to nic innego jak puzle(komendy) które trzeba połączyć tak aby działały. Kiedyś coś takiego widziałem na androida i na PC ale nie mogę tego znaleźć.
P-103896
Traxxas
Temat założony przez niniejszego użytkownika
» 2014-02-02 23:38:03
C/C++
#include <iostream>
#include <limits>
using namespace std;

int main()
{
    float liczba1, liczba2;
    int x;
    bool ww;
   
   
    do
    {
        cout << "  -------------------------------------------------------\n"
        << " ---------------------------------------------------------\n"
        << "--------------------K A L K U L A T O R--------------------\n"
        << " ---------------------------------------------------------\n"
        << "  -------------------------------------------------------\n";
       
        do
        {
           
            cout << "\nPodaj 1 liczbe: ";
            cin >> liczba1;
            ww = liczba1;
            ww = cin.good();
            cin.sync();
            cin.clear();
           
            if( !ww ) {
                cin.sync();
                cin.clear();
                cout << "Podales nieprawidlowa liczbe. Sproboj jeszcze raz\n";
            }
        } while( !ww );
       
        do
        {
           
            cout << "\nPodaj 2 liczbe: ";
            cin >> liczba2;
            ww = liczba2;
            ww = cin.good();
            cin.sync();
            cin.clear();
            if( !ww ) {
                cin.sync();
                cin.clear();
                cout << "Podales nieprawidlowa liczbe. Sproboj jeszcze raz\n";
            }
        } while( !ww );
       
       
       
       
       
       
        do
        {
            cout << "*************************";
            cout << "\n1 Dodawanie" << endl;
            cout << "2 Odejmowanie" << endl;
            cout << "3 Mnozenie" << endl;
            cout << "4 Dzielenie" << endl;
            cout << "\n0 Exit\n\n" << endl;
            cout << "wybor : ";
           
           
            cin >> x;
            ww = x;
            ww = cin.good();
           
           
            cin.sync();
            cin.clear();
           
           
            if( x > 4 ) {
                cin.sync();
                cin.clear();
                cout << "Podales nieprawidlowa liczbe. Sproboj jeszcze raz\n";
            }
           
            if( !ww ) {
                cin.sync();
                cin.clear();
                cout << "Podales nieprawidlowa liczbe. Sproboj jeszcze raz\n";
               
               
            }
        } while( !ww, x > 4 );
       
       
       
        switch( x )
        {
        case 1:
           
            cout << "*************************" << "\nWynikiem dodawania " << liczba1 << " i " << liczba2 << " jest wynik " << liczba1 + liczba2 << "\n\n" << endl;
            break;
           
        case 2:
            cout << "*************************" << "\nWynikiem odejmowania " << liczba1 << " i " << liczba2 << " jest wynik " << liczba1 - liczba2 << "\n\n" << endl;
            break;
           
        case 3:
            cout << "*************************" << "\nWynikiem mnozenia " << liczba1 << " i " << liczba2 << " jest wynik " << liczba1 * liczba2 << "\n\n" << endl;
            break;
           
        case 4:
            cout << "*************************" << "\nWynikiem dzielenia " << liczba1 << " i " << liczba2 << " jest wynik " << liczba1 / liczba2 << "\n\n" << endl;
            break;
           
        case 0:
            cout << "\nDziekuje za uzycie programu\n";
            break;
        }
       
       
    } while( x != 0 );
   
   
   
    system( "pause" );
    return 0;
}
P-103909
Deyvin
» 2014-02-03 16:56:04
Brawo! O to chodziło. Dodatkowo mógłbyś poprawić to, że w pętli i w zagnieżdżonym if'ie czyścisz flagi błędów i bufor, wystarczy raz na początku pętli bo pobierasz dane do zmiennej tylko raz w jednym kroku pętli, if'em sprawdzasz czy był błąd i wyświetlasz o tym komunikat.
P-103922
« 1 »
  Strona 1 z 1