Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 20:50   #1
Alex COD
 
Регистрация: 04.04.2011
Сообщений: 9
По умолчанию Разные случайные числа в разных переменных.

Пишу вот такую не путевую игру, которая перебирает различные значения от 1 до 12, как на игральных костях. Но я столкнулся с проблемой, что в переменных всегда числа одинаковы. Как сделать, чтобы они были разные, не как не пойму.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

int rnd(int range);
void seedrnd(void);

int main()
{
	int you;
	int PC;
	
	printf("Press Enter to throw dices\n");
	printf("Press Enter to START...\n");
	getch();
	
	seedrnd();
	you=rnd(12)+1;
	printf("%i\n",you);
	
	seedrnd();
	PC=rnd(12)+1;
	printf("%i\n",PC);
	
	if(you>PC)
	{
		printf("You WIN!!!\n");
	}
	else if(PC>you)
	{
		printf("You LOSE!!!\n");
	}
	else
	{
		printf("DRAW!!!\n");
	}
	getch();
	return(0);
}

int rnd(int range)
{
	int r;
	
	r=rand()%range;
	return(r);
}

void seedrnd(void)
{
	srand((unsigned)time(NULL));
}
Заранее спасибо!
Alex COD вне форума Ответить с цитированием
Старый 05.04.2011, 21:19   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Код:
seedrnd()
замени на
Код:
srand(time(NULL));
причем используй его только один раз в начале программы.

а вместо
Цитата:
Код:
rnd(12)+1
поставь
Код:
rand() % 12 + 1
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 05.04.2011, 21:55   #3
Alex COD
 
Регистрация: 04.04.2011
Сообщений: 9
По умолчанию

Спасибо, действительно, заработало, как надо.
Но не могли бы еще подсказать, как сделать, чтобы игру можно было бы заново повторять. Чтобы например, после первой игры был вопрос "Repeat?" и на ответ Yes все бы повторялось заново.
Я сначала хотел сделать так:
Код:
////
for(.....)
{ 
      ///////
      if(i='Y' || i='y')
            continue
}
////////
Но понял, что это работать не будет. Что посоветуете?
Alex COD вне форума Ответить с цитированием
Старый 06.04.2011, 00:23   #4
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

можно так
Код:
do {

...

i=getch();
} while (i!='y' && i!='Y');
но лучше так

Код:
while (1) {

...

i=getch();

if (условие) break;
}
onewho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Случайные числа Toa Microsoft Office Excel 6 30.11.2013 18:45
случайные числа NeVerSS Общие вопросы Delphi 3 01.10.2010 22:22
Случайные числа severin Помощь студентам 8 02.02.2010 17:35
Случайные числа.... Teen4jump Общие вопросы Delphi 4 28.11.2008 23:52