Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

не поддается цикл while

30K
10 сентября 2010 года
Morphling
74 / / 17.01.2010
Здрасте! Помогите пожалуйста разобраться с циклом. Не могу разобраться с циклом while.
 
Код:
int main()
{
    int a;
    a=7;
    do
    {
        cout << rand() %30 +1 << " ";
        Sleep(100);
    }
    while (rand() != a);

Из этого кода, я думал что, когда условие цикла while проверится и оно будет истинным, то цикл завершится и прога дальше пойдет работать, но на экране я вижу что, цикл не проверяет что ли, кароче пропускает.
Например, тут а=7, по идее, пока rand() не равно 7, цикл повторяется и когда встретится 7, цикл должен завершится. Но у меня такое не выходит, цифра 7 появляется, а выход из цикла не происходит, что я делаю не так. Заранее благодарен.
41K
10 сентября 2010 года
gaga
44 / / 22.07.2009
Из твоего кода я не понял, что ты хочешь сделать. while выполняется до тех пор, пока условие истинно, т.е. в твоем случае будет выполняться до тех пор, пока rand() не вернет 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);

Такой цикл будет выполняться до тех пор, пока генератор не выдаст 7. Печататься будет при этом не само число, а его остаток от деления на 30 + 1. Цикл завершится, когда ты увидишь на экране 8, соответственно. Не знаю, это ли тебе надо.
30K
10 сентября 2010 года
Morphling
74 / / 17.01.2010
я мало что понял, но хотел узнать, что нужно сделать, чтобы цикл завершился когда я на экране вижу цифру 7 ?
14
10 сентября 2010 года
Phodopus
3.3K / / 19.06.2008
 
Код:
if (7 == b % 30 +1)
      break;
30K
10 сентября 2010 года
Morphling
74 / / 17.01.2010
У меня код такой:
Код:
#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;
}

когда запускаю, все нормально, я думал, что по идее когда появится цифра 7, цикл завершится и выведет надпись Найдена цифра 7, но прога запускается и эта надпись появляется не после цифры 7, а после других цифр. Что я делаю не так?
Кстати, среда Visual Studio 2008.
41K
10 сентября 2010 года
gaga
44 / / 22.07.2009
ээ
 
Код:
do
    {
        b = rand();
        cout << b << " ";
        Sleep(100);
    }
    while (a != b );

не? нафига это b % 30 +1?
30K
10 сентября 2010 года
Morphling
74 / / 17.01.2010
Цитата: gaga
ээ
 
Код:
do
    {
        b = rand();
        cout << b << " ";
        Sleep(100);
    }
    while (a != b );

не? нафига это b % 30 +1?



b %30 +1 значит, что нужно начать с одного в диапазоне тридцати цифр. Мой предыдущий вопрос ещё актуален.

10
10 сентября 2010 года
Freeman
3.2K / / 06.03.2004
Функция rand() недетерминирована, и rand(), выводимый на экран, не есть rand(), проверяемый как условие выхода.
30K
10 сентября 2010 года
Morphling
74 / / 17.01.2010
Цитата: Freeman
Функция rand() недетерминирована, и rand(), выводимый на экран, не есть rand(), проверяемый как условие выхода.



а на человеческом языке?:)

2.1K
10 сентября 2010 года
Norgat
452 / / 12.08.2009
Цитата: Morphling
а на человеческом языке?:)



это значит, что если ты вызываешь rand() 2 раза подряд, то значения будут различные(скорее всего).

41K
10 сентября 2010 года
gaga
44 / / 22.07.2009
Читай книжки для начинающих и маны по используемым функциям.
rand() возвращает псевдослучайное целое число в диапазоне [0 RAND_MAX], каждый вызов число разное.
Опиши задачу, я не понимаю, что ты хочешь сделать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог