Zgadywanie wylosowanej liczby.

2018-11-14 17:20
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?

Pozostało 580 znaków

2018-11-14 17:29

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.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 5x, ostatnio: cerrato, 2018-11-14 21:42
wiem, miałem wcześniej dodane liczba=wynik, ale usunąłem, bo próbowałem to zrobić na parę sposobów. Wprowadziłem zmienną pomocniczą b=losowanie() i działa już jak trzeba, dzięki. - klonstoper 2018-11-14 17:35

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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