Пара вопросов (проверка условия if и случайное число)

Модератор: Модераторы разделов

Аватара пользователя
lolobot
Сообщения: 436
ОС: Gentoo 2008.0

Пара вопросов

Сообщение lolobot »

Код: Выделить всё

#include <stdio.h>

#define STRANA_0 "Russia"
#define STRANA_1 "Ukraina"
#define STRANA_2 "Belorussia"

#define OTVET_0 "Moscow"
#define OTVET_1 "Kiev"
#define OTVET_2 "Minsk"

main(){

        char* strana[] = {STRANA_0, STRANA_1, STRANA_2};
        int rnd=rand()%3;
        char* otvet;

        printf("%s\n", strana[rnd]);
        scanf("%\n", otvet);

        if (rnd=0 && otvet==OTVET_0)
                printf("Pravilno!\n");

        else if (rnd=1 && otvet==OTVET_1)
                printf("Pravilno!\n");

        else if (rnd=2 && otvet==OTVET_2)
                printf("Pravilno!\n");

        else
                printf("HE Pravilno!\n");

}


Программка по идее должна рандомно выдавать страны, получать в ответ столицу и проверять ответ, визникла пара вопросов:
1 почему в данном случае rnd всегда равен 1. Как заставить rnd быть рандомной при каждом новом запуске программы?
2 почему не работает проверка ответов? где ошибся?
GNU/Linux forever! [Gentoo 2008.0]
Спасибо сказали:
Аватара пользователя
deadhead
Сообщения: 1913
Статус: zzz..z

Re: Пара вопросов

Сообщение deadhead »

Может необходимо инициализировать генератор случайных чисел, что-то типа randomize...
[x] close
Спасибо сказали:
Аватара пользователя
dey
Сообщения: 335
ОС: OpenSuse 11.1

Re: Пара вопросов

Сообщение dey »

lolobot писал(а):
28.03.2008 05:24
Программка по идее должна рандомно выдавать страны, получать в ответ столицу и проверять ответ, визникла пара вопросов:
1 почему в данном случае rnd всегда равен 1. Как заставить rnd быть рандомной при каждом новом запуске программы?

Для начала надо инициализировать рандомный генератор ф-ией srand() ...
Function: void srand (unsigned int seed)
This function establishes seed as the seed for a new series of pseudo-random numbers. If you call rand before a seed has been established with srand, it uses the value 1 as a default seed


2 почему не работает проверка ответов? где ошибся?

Видимо, изза использования присвоения вместо операции сравнения :

Код: Выделить всё

 if (rnd=0 && otvet==OTVET_0)
В сознательных действиях должен присутствовать существенный неалгоритмический компонент.
Roger Penrose,The Emperor's New Mind
Спасибо сказали:
un-defined
Сообщения: 145
ОС: Kubuntu, Gentoo

Re: Пара вопросов

Сообщение un-defined »

Строки в С сравнивают вообще-то не так..
в функции scanf опечатка..
память для ответа не выделена..
Don`t try - just do or do not ©Master Joda
Спасибо сказали: