Вложенные циклы с броском монеты C ++ - PullRequest
3 голосов
/ 03 декабря 2011

Мне нужно написать программу, которая запускает цикл для подбрасывания монеты.Меня поддерживают, чтобы ввести число в консоль и заставить его запускать цикл броска монеты много раз.Мне нужно использовать вложенные циклы.Я работал над этим часами и не могу заставить его работать.

Предполагается, что консольный ввод-вывод будет выглядеть следующим образом:
Введите число бросков, которые нужно выполнить [0 = выход]: 3 головыTails Heads

Введите количество бросков для выполнения [0 = выход]: 2 Tails Tails

Введите количество бросков для выполнения [0 = exit]: 0

Это код, который у меня есть:

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main ()
{
  srand(time(0));rand(); 
  int result = rand() % 2;
  while (true)
  {
    int n; // this many tosses
    cout << "How many tosses";
    cin >> n;
    cin.ignore (1000, 10);
    if (n == 0)
      break;

    for (int i = 0; i < n; i++)
    //random number generator
    {    
      if (result == 0)
        cout<< "Heads"<<endl;
      else if (result == 1)
        cout << "Tails"<<endl;
      else if (result != 0 || result !=1) 
        return 0;
    } //for 
  }//while
}//main

Ответы [ 3 ]

2 голосов
/ 03 декабря 2011

Ваш цикл for не имеет той части, которую вы фактически пытаетесь выполнить внутри {}. Попробуйте добавить фигурные скобки вокруг части, которую хотите зациклить, и посмотрите, исправит ли она это для вас.

Я отредактировал отступ в вашем коде, чтобы показать вам единственную строку, которая фактически будет зацикливаться (srand(time(0)))

1 голос
/ 03 декабря 2011
  1. Вам нужны скобки вокруг блока петли, т.е.

    for( int i = 0; i < n; i++ )
    {
        // Code goes here
    }
    
  2. Как показано выше, вам нужно инициализировать i.

  3. Поместите начальное число rand() перед циклом while(...).

0 голосов
/ 03 декабря 2011

Вам нужно переместить int result = rand() % 2; в вашу for петлю! В противном случае вы будете получать один и тот же результат каждый раз, пока не перезапустите приложение.

for (int i = 0; i < n; i++)
        //random number generator
{    
    int result = rand() % 2;
    if (result == 0)
         cout<< "Heads"<<endl; /* to make your output look like your example you should removed the <<endl from here */
    else if (result == 1)
        cout << "Tails"<<endl; /* and here */
    else if (result != 0 || result !=1) 

        return 0;
} //for 

/* and put it here */
cout << endl;
...