Zgadywanka liczb.

0

Cześć
Mam problem z programem który ma wylosować liczbę 1-100, a użytkownik ją zgadnąć. Program ma podpowiadać czy liczba jest za mała za duża czy poprawna.
Napisałem tyle ale nie działa proszę o pomoc.

#include <ctime>
#include <cstdlib>
#include <iostream>

using namespace std;

int zakresRand (int minimum, int maksimum)
{
    //Dostajemy liczbe losowa od 0 do górnej granicy naszego
    // zakresu, po czym dodajemy najnizsza mozliwa wartosc
    return rand() % (maksimum - minimum + 1 ) + minimum;

}

    int perfect ()
    {
        if (cyfra == liczba)
        {
            cout << "Zgadles!";
            return 0;
        }
    }
    int smaller ()
    {
        if (cyfra < liczba)
        {
            do
            {
                if (cyfra < liczba)
                {
                    cout << "liczba za mala!" << endl << "podaj liczbe ponownie:";
                    cin >> cyfra;
                }
                else if (cyfra > liczba)
                {
                    cout << "liczba za duza!" << endl << "podaj liczbe ponownie:";
                    cin >> cyfra;
                }
                else if (cyfra == liczba)
                {
                    cout << "Zgadles!";
                    continue;
                }

            }while (cyfra != liczba);
            return 0;
        }
    }

    int higher ()
    {

        if (cyfra > liczba)
        {
            do
            {
                if (cyfra < liczba)
                {
                    cout << "liczba za mala!" << endl << "podaj liczbe ponownie:";
                    cin >> cyfra;
                }
                else if (cyfra > liczba)
                {
                    cout << "liczba za duza!" << endl << "podaj liczbe ponownie:";
                    cin >> cyfra;
                }
                else if (cyfra == liczba)
                {
                    cout << "Zgadles!";
                    continue;
                }

            }while (cyfra != liczba);
            return 0;
        }
    }

    int main()
{
    int liczba; // wylosowna przez komputer
    int cyfra; // wpisana przez uzytkownika

    int zakresRand();

    srand( time( NULL ) );
    liczba = zakresRand( 1, 100);

    cout << "Zgadnij wylosowana liczbe w zakresie 1-100:";
    cin >> cyfra;

    int perfect();
    int higher();
    int smaller();

}
4

Napisałem tyle ale nie działa

Co nie działa, nie kompiluje się? Rzuca wyjątkiem? Debugowałes?

2

Daj normalne ludzkie argumenty do funkcji (bo tak jest porządnie, powinno ci wystarczyć).
Masz jakieś domniemanie, że w funkcjach cyfra i liczba automagicznie się odnajdą, a tak nie jest.

BTW słowa cyfra i liczba nie są tożsame. Wymyśli inne.

1

@Czarri: Po pierwsze twoje zmienne liczba i cyfra nie są widoczne dla funkcji.
Po drugie taki zapis int perfect(); to deklaracja funkcji,a nie jej wywołanie. Tyle jeżeli chodzi o errory.
Następnie zastanów się, czy są ci potrzebne 2 funkcje robiące dokładnie to samo, a 3 to tylko część logiki 1 i 2.

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

const int StartMin=1,StartMax=100;

int randValue(int min,int max)
{
    return min+(rand()%(max-min+1));
}

bool comparer(int &CurrMin,int &CurrMax,int Value,int Curr)
{
    if (Curr<Value)
    {
        if(CurrMin<Curr)
        {
            cout<<"Liczba "<<Curr<<" za mala!"<<endl;
            CurrMin=Curr;
        }
        else if(CurrMin>Curr) cout<<"Nawet "<<CurrMin<<" za mala (oczywiście "<<Curr<<" też)!"<<endl;
        else cout<<"Już wspominałem, liczba "<<Curr<<" za mala!"<<endl;
        return true;
    }
    if (Curr>Value)
    {
        if(CurrMax>Curr)
        {
            cout<<"Liczba "<<Curr<<" za duża!"<<endl;
            CurrMax=Curr;
        }
        else if(CurrMax<Curr) cout<<"Nawet "<<CurrMax<<" za duża (oczywiście "<<Curr<<" też)!"<<endl;
        else cout<<"Już wspominałem, liczba "<<Curr<<" za duża!"<<endl;
        return true;
    }
    cout<<"Zgadłeś!"<<endl;
    return false;
}

int main()
{
    srand(time(NULL));
    int Value=randValue(StartMin,StartMax),Curr,CurrMin=StartMin-1,CurrMax=StartMax+1;
    cout<<"Zgadnij wylosowana liczbe w zakresie "<<StartMin<<"-"<<StartMax<<"."<<endl;
    while((cout<<"Podaj liczbę: ")&&(cin>>Curr)&&(comparer(CurrMin,CurrMax,Value,Curr))) {}
    return 0;
}

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