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

Błędny wynik sprawdzania losowania dotyczącego odgadnięcia liczby przez użytkownika

Ostatnio zmodyfikowano 2015-09-02 20:17
Autor Wiadomość
kevin
Temat założony przez niniejszego użytkownika
Błędny wynik sprawdzania losowania dotyczącego odgadnięcia liczby przez użytkownika
» 2015-09-01 16:36:42
Witam! ;)
Napisałem program z zadania domowego, które dotyczyło tematu funkcji. Funkcja losuje liczbę, użytkownik musi zgadnąć jaka to liczba z przedziału 1-5.
Niestety program zawsze wyświetla informacje o błędnym wyniku mimo tego, że jest czasami inaczej gdy liczba została odgadnięta przez użytkownika. Komunikat o poprawnym wyniku wyświetla się natychmiast po tym o błędnym wyniku, po czym następuje koniec programu na co wskazuje 'if'. Mogę prosić was o wytłumaczenie i gdzie tkwi błąd? :)

C/C++
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>
using namespace std;
int wczytywanie()
{
    int losowa;
    losowa = rand() % 5 + 1;
    return losowa;
}
main()
{
    srand( time( NULL ) );
    int wpisywana;
    int liczba = wczytywanie();
   
    while( liczba != wpisywana )
    {
       
        cout << "Podaj liczbe z przedzialu 1-5" << endl;
        cin >> wpisywana;
        if( wpisywana > 5 & wpisywana < 1 ) cout << "Niepoprawny przedzial!" << endl;
       
        cout << "Nie ta liczba, sproboj jeszcze raz!" << endl;
        Sleep( 3000 );
        system( "cls" );
    }
   
    if( liczba = wpisywana )
         cout << "Brawo, zgadles!";
   
    return 0;
   
}
P-137119
pekfos
» 2015-09-01 16:52:45
C/C++
if( wpisywana > 5 & wpisywana < 1 ) cout << "Niepoprawny przedzial!" << endl;

Zły operator i warunek bez sensu.

C/C++
cout << "Nie ta liczba, sproboj jeszcze raz!" << endl;
Wypisujesz to niezależnie od wartości wpisywana.

C/C++
if( liczba = wpisywana )
     cout << "Brawo, zgadles!";

Zły operator i warunek niepotrzebny.

C/C++
main()
{
Nie tak powinna wyglądać definicja main().
P-137120
kevin
Temat założony przez niniejszego użytkownika
» 2015-09-01 17:31:30
Dzięki za odpowiedź. Poprawiłem błędy i działa ale jest jedno ale... Wraz z komunikatem "Niepoprawny przedzial" wyskakuje ten drugi o błędnej odpowiedzi.

C/C++
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>
using namespace std;
int wczytywanie()
{
    int losowa;
    losowa = rand() % 5 + 1;
    return losowa;
}
main()
{
    srand( time( NULL ) );
    int wpisywana;
    int liczba = wczytywanie();
   
    while( liczba != wpisywana )
    {
       
        cout << "Podaj liczbe z przedzialu 1-5" << endl;
        cin >> wpisywana;
        if( wpisywana > 5 || wpisywana < 1 ) cout << "Niepoprawny przedzial!" << endl;
       
        if( wpisywana != liczba ) cout << "Nie ta liczba, sproboj jeszcze raz!" << endl;
       
        Sleep( 3000 );
        system( "cls" );
    }
   
    if( liczba = wpisywana )
         cout << "Brawo, zgadles!";
   
    return 0;
   
}
P-137122
pekfos
» 2015-09-01 19:06:57
Wstaw jeden warunek w else drugiego.

Poprawiłem błędy
Połowę.
P-137123
kevin
Temat założony przez niniejszego użytkownika
» 2015-09-02 20:17:40
Działa, dzieki ;)
P-137189
« 1 »
  Strona 1 z 1