int main()
{
int a;
a=7;
do
{
cout << rand() %30 +1 << " ";
Sleep(100);
}
while (rand() != a);
не поддается цикл while
Код:
Из этого кода, я думал что, когда условие цикла while проверится и оно будет истинным, то цикл завершится и прога дальше пойдет работать, но на экране я вижу что, цикл не проверяет что ли, кароче пропускает.
Например, тут а=7, по идее, пока rand() не равно 7, цикл повторяется и когда встретится 7, цикл должен завершится. Но у меня такое не выходит, цифра 7 появляется, а выход из цикла не происходит, что я делаю не так. Заранее благодарен.
Перед использованием rand() всегда надо инициализировать генератор псевдослучаянных чисел, например, так: srand ( time(NULL) );
У тебя то, что появляется на экране, не связано с условием завершения цикла, поэтому он и не завершается когда ты видишь 8 на экране.
Код:
srand ( time(NULL) );
int a = 7;
do
{
int b = rand();
cout << b % 30 +1 << " ";
Sleep(100);
}
while (b != a);
int a = 7;
do
{
int b = rand();
cout << b % 30 +1 << " ";
Sleep(100);
}
while (b != a);
Такой цикл будет выполняться до тех пор, пока генератор не выдаст 7. Печататься будет при этом не само число, а его остаток от деления на 30 + 1. Цикл завершится, когда ты увидишь на экране 8, соответственно. Не знаю, это ли тебе надо.
я мало что понял, но хотел узнать, что нужно сделать, чтобы цикл завершился когда я на экране вижу цифру 7 ?
Код:
if (7 == b % 30 +1)
break;
break;
Код:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
#include <time.h>
using namespace std;
int main()
{
int a,b;
a=7;
srand ( time(NULL) );
do
{
b=rand();
cout << rand() %30 +1 << " ";
Sleep(100);
}
while (a!=b %30 +1);
printf("Naidena cifra 7");
Sleep(10000);
return 0;
}
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
#include <time.h>
using namespace std;
int main()
{
int a,b;
a=7;
srand ( time(NULL) );
do
{
b=rand();
cout << rand() %30 +1 << " ";
Sleep(100);
}
while (a!=b %30 +1);
printf("Naidena cifra 7");
Sleep(10000);
return 0;
}
когда запускаю, все нормально, я думал, что по идее когда появится цифра 7, цикл завершится и выведет надпись Найдена цифра 7, но прога запускается и эта надпись появляется не после цифры 7, а после других цифр. Что я делаю не так?
Кстати, среда Visual Studio 2008.
Код:
do
{
b = rand();
cout << b << " ";
Sleep(100);
}
while (a != b );
{
b = rand();
cout << b << " ";
Sleep(100);
}
while (a != b );
не? нафига это b % 30 +1?
Цитата: gaga
ээ
не? нафига это b % 30 +1?
Код:
do
{
b = rand();
cout << b << " ";
Sleep(100);
}
while (a != b );
{
b = rand();
cout << b << " ";
Sleep(100);
}
while (a != b );
не? нафига это b % 30 +1?
b %30 +1 значит, что нужно начать с одного в диапазоне тридцати цифр. Мой предыдущий вопрос ещё актуален.
Функция rand() недетерминирована, и rand(), выводимый на экран, не есть rand(), проверяемый как условие выхода.
Цитата: Freeman
Функция rand() недетерминирована, и rand(), выводимый на экран, не есть rand(), проверяемый как условие выхода.
а на человеческом языке?:)
Цитата: Morphling
а на человеческом языке?:)
это значит, что если ты вызываешь rand() 2 раза подряд, то значения будут различные(скорее всего).
rand() возвращает псевдослучайное целое число в диапазоне [0 RAND_MAX], каждый вызов число разное.
Опиши задачу, я не понимаю, что ты хочешь сделать.