Problem z powtórzeniem programu

0

Witam

Mam stworzyć program gdzie podaje się pierwszą liczbę komputer losuje drugą i je mnoży. Program ma to powtarzać dopóki nie wciśnie się q. Nie wiem co ja robię źle ale program nie działa.
Oto mój program:

#include <iostream>
#include <cstdlib>
#include <conio.h>
#include <ctime>
using namespace std;
 
int main()
{
    int liczba1, wynik;
    char klawisz, koniec;
    srand( time( NULL ) );
    int liczba2=( rand() % 6 ) + 7;
     
    do
    {
        cout<<"Podaj liczbe do pomnozenie: ";
        cin>>liczba1;
        while (liczba1<0)
        {
            cout<<"Liczba nie moze byc ujemna"<<endl<<endl;
            cout<<"Podaj liczbe do pomnozenie: ";
            cin>>liczba1;
        }
     
        cout<<"Mnozenie "<<liczba1<<" * "<<liczba2<< std::endl;
 
        cout<<"Jezeli juz obliczyles nacisnij ENTER"<<endl<<endl;
        klawisz=getch();
        while (klawisz!=13)
        {
            cout<<"Wcisnij ENTER"<<endl<<endl;
            klawisz=getch();
        }
        while (klawisz==13)
        {
            wynik=liczba1*liczba2;
            cout<<"Wynik to: "<<wynik<<endl<<endl;
            cout<<"Jezeli chcesz zakonczyc nacisnij 'q' jezeli nie chcesz nacisnij inny klawisz"<<endl<<endl;
            koniec=getch();
        }    
    }
    while (koniec=='q');
    
        cout<<"Koniec";
     
    return 0;
0

W jakim środowisku to piszesz? Visual Studio? Spróbuj prześledzić wykonanie programu instrukcja po instrukcji debuggerem i zobaczyć, co się dokładnie dzieje.

1

Program ma to powtarzać dopóki nie wciśnie się q

W takim razie Twój warunek w pętli jest niepoprawny, powinieneś mieć

while (koniec != 'q');
3
int x;
char ch = 0;

while (std::tolower(ch) != 'q') {
     while (std::cin >> x) {
           ....
     }
     std::cin.clear();
     if (!(std::cin >> ch)) break;
}

https://godbolt.org/z/vxo6jG

0

Strasznie przekombinwałeś!

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cctype>
using namespace std;

int main()
{
    srand(time(0));
    for(;;)
    {
        cout<<"Podaj liczbe do pomnozenia (q - aby zakonczyć): ";
        unsigned inpValue,rndValue=(unsigned)(7+rand()%6);
        if(!(cin>>inpValue))
        {
        	cin.clear();
        	if(tolower(cin.get())=='q') break;
        	cout<<"Niepoprawne dane"<<endl;
        	continue;
        }
        while(cin.get()!='\n') {}
        
        // Nie wiem po kiego to zatrzymanie, 2 wiersze
        cout<<"Naicisnij <enter>: ";
        while(cin.get()!='\n') {}
        
        cout<<inpValue<<" * "<<rndValue<<" = "<<(inpValue*rndValue)<<endl<<endl;
    }
    cout<<"Koniec";
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1