Zgadywanie wylosowanej liczby.

0

Mam do zrobienia prosty program, który ma wylosować liczbę, a później trzeba ją odgadnąć. Losowanie ma być w osobnej funkcji.
Zrobiłem to tak:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int losowanie()
{
    int liczba;
    int wynik;
    srand(time(NULL));
    liczba=rand()%99+1;
    return wynik; /*tutaj niezależnie od returna zawsze liczba wylosowana to 63*/
}

int main(void)
{
    int a;
    do {
    printf("\nPodaj liczbe: ");
    scanf("%d", &a);
    if(a<losowanie())
      printf("\nPodales za mala liczbe");
            if(a>losowanie())
            printf("\nPodales za duza liczbe");
	   } while (losowanie()!=a);
        printf("\nPodales dobra liczbe");
}

Jeśli ustawię obojętnie jakiego returna to wynik będzie 63, a jeśli na return dam "liczba" to za każdym razem ta liczba się losuje na nowo. Gdzie jest błąd?

3

Losowanie musisz mieć zrobione przed pętlą, która wykonuje odpytywanie.
Zamiast za każdym razem na końcu pętli sprawdzać while (losowanie()!=a);, przed pętlą przypisz sobie wynik losowania do jakiejś zmiennej, a następnie na końcu pętli sprawdzaj while (zapametany_wczesniej_wynik_losowania!=a);

Tak przynajmniej rozumiem mechanizm działania, który chcesz osiągnąć - system losuje liczbę, potem użytkownik podaje swój strzał, a program informuje, czy ta liczba jest za duża, czy za mała. W chwili podania odpowiedniej wartości, zabawa się kończy. W takim układzie wylosowana liczba powinna być niezmienna - czyli musisz ją wylosować jeden raz, przed rozpoczęciem odpytywania.

A co do tego, że zostaje wylosowana ta sama liczba - dajesz return wynik, ale wcześniej w funkcji wynik losowania zapisujesz do zmiennej liczba a nie wynik.

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