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

[Lekcja 16] Gra z losowaniem

Ostatnio zmodyfikowano 2015-05-10 09:54
Autor Wiadomość
maciek856
Temat założony przez niniejszego użytkownika
[Lekcja 16] Gra z losowaniem
» 2015-05-10 08:43:31
Otóż napisałem program losujący, wydaje się że wszystko jest cacy. Program ma losować liczbę od 1 do 100, ale niezależnie od tego co wpisze zawsze wyskakuje że liczba jest za mała.

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    srand( time( NULL ) );
    int max = 100;
    int min = 1;
    unsigned char liczba =( rand() % 100 ) + 1;
    unsigned char propozycja = 0;
    unsigned char proby = 0;
   
    cout << endl << " Program wylosuje liczbe z zakresu od 1 do 100. Twoim zadaniem jest odgadniecie, jaka to liczba. Powodzenia! ";
   
    do
    {
        propozycja = 0;
       
        cout << endl << endl << " Twoja propozycja to: " << propozycja;
        cin >> propozycja;
        cin.clear();
        cin.sync();
       
        if( propozycja == liczba )
        {
            proby++;
            cout << endl << " Gratulacje! Udalo Ci sie odgadnac liczbe! " << endl << " Liczba oddanych przez Ciebie strzalow: " << proby;
        }
        else if( propozycja < liczba )
        {
            proby++;
            cout << endl << " Twoja propozycja jest mniejsza od wylosowanej liczby :( ";
            cin.clear();
            cin.sync();
        }
        else if( propozycja > liczba )
        {
            proby++;
            cout << endl << " Twoja propozycja jest wieksza od wylosowanej liczby :( ";
            cin.clear();
            cin.sync();
        }
    } while( propozycja != liczba );
   
    return 0;
}

Wie ktoś co z tym zrobić?
P-131968
Szymon2727
» 2015-05-10 08:59:32
Zmień usigned char na int i usuń zmienne min. i max. - nie wiem po co tworzysz zmiennych, których nie używasz. Dlaczego ciągle pisało, że podana liczba jest za mała ? Bo char przechowuje pojedynczy znak.
P-131969
maciek856
Temat założony przez niniejszego użytkownika
» 2015-05-10 09:10:55
Wszystko poprawiłem, ale błąd się powtarza tzn. jeśli na początku podam za dużą to za każdym razem mówi mi "podana liczba jest większa od wylosowanej", a jeśli na początku podam za małą to za każdym razem mówi mi "podana liczba jest za mała"
P-131970
carlosmay
» 2015-05-10 09:26:41
Jeśli tak wygląda kod po popraeieniu...
C/C++
srand( time( NULL ) );
unsigned int liczba =( rand() % 100 ) + 1;
unsigned int propozycja = 0;
unsigned int proby = 0;
... to kod działa jak należy.
P-131971
maciek856
Temat założony przez niniejszego użytkownika
» 2015-05-10 09:31:59
Teraz tak wygląda...
Ale po uruchomieniu programu pojawia się "Twoja propozycja to: 0" i dopiero mogę wpisać. Da się jakoś usunąć to zero?
P-131972
Szymon2727
» 2015-05-10 09:40:52
propozycja = 0;

Pewnie stąd te zero.
P-131973
carlosmay
» 2015-05-10 09:49:31
Przeanalizuj ten kod, porównuje zmienną typu char i int. Zobaczysz jakie ma wartości typ char po
rzutowaniu na typ int, jako char poćwicz na liczbach i literach, druga część pobiera tylko liczby.

C/C++
int main()
{
    char ch;
    cin >> ch; // pobiera zmienna typu char, np. 10
    cout << int( ch ) << endl; // wypisanie kodu dla liczby 10, wynosi 49 bo taki jest kod ASCII dla tej liczby
    // zapis "int(ch) to konwersja typu char na int(rzutowanie)
    int liczba;
    cin >> liczba; // pobiera zmienna typu int
    cout << liczba << endl; // wypisuje dokladnie to zo pobiera
   
    return 0;
}

C/C++
propozycja = 0;

cout << endl << endl << " Zgadnij liczbe: "; // wypisz tekst
cin >> propozycja; // podaj liczbe,
cin.clear();
cin.sync();
C/C++
propozycja = 0;

cout << endl << endl << " Twoja propozycja to: " << propozycja; // Wypisuje tekst oraz wartosc obecnie utworzonej zmiennej, czyli " << propozycja - aktualnie propozycja = 0;
cin >> propozycja; // tutaj dopiero zmienia się wartosc zmiennej "propozycja"
cin.clear();
cin.sync();
P-131974
maciek856
Temat założony przez niniejszego użytkownika
» 2015-05-10 09:54:27
Teraz wszystko śmiga. Dzięki wielkie :D
P-131975
« 1 »
  Strona 1 z 1