Problem z powtórzeniem programu

Problem z powtórzeniem programu
Makapaka182
Makapaka182
  • Rejestracja:około 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:3
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:

Kopiuj
#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;
edytowany 1x, ostatnio: cerrato
Zobacz pozostały 1 komentarz
Tasmanian Devil
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.99784714)
jarekr000000
Aż mi się łezka w oku zakręciła konio h - czuje się 30 lat młodszy.
AT
Ale co to znaczy, że program nie działa? Powiedz konkretnie, co się dzieje.
AK
@jarekr000000: gotoxy, te sprawy ... oj było ...
Makapaka182
Makapaka182
Gdy wciskam q lub jakikolwiek inny przycisk program wyświetla "Wynik to: Jezeli chcesz zakonczyc nacisnij 'q' jezeli nie chcesz nacisnij inny klawisz" A program miał wyświetlać "Koniec" po wciśnięciu 'q' i powtarzać cały program po wciśnięciu innego przycisku
AT
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 2 miesiące
  • Postów:24
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.

Makapaka182
Makapaka182
w DevC++
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:około 8 godzin
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ć

Kopiuj
while (koniec != 'q');

Makapaka182
Makapaka182
próbowałam tak i nie działa
Makapaka182
Makapaka182
wyświetla to samo
several
No to masz błędy jeszcze w innych miejscach bo warunek powinien wyglądać tak jak napisałem.
Makapaka182
Makapaka182
tylko gdzie???
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:minuta
3
Kopiuj
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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:7 dni
0

Strasznie przekombinwałeś!

Kopiuj
#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;
}

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.