C ++: программа «не отвечает» при выполнении - PullRequest
0 голосов
/ 26 мая 2018

Я работал над этим домашним заданием на C ++, и когда я пытался выполнить, файл .exe оставался «Не отвечает».Я закрыл программу и кодовые блоки.Когда я попытался открыть другую программу, которую я знаю, работает, чтобы перезапустить мое назначение и повторить попытку, кодовые блоки перестали работать.Теперь, когда я пытаюсь открыть его, он продолжает говорить «Не отвечает».

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

Моя программа не возвращает ошибок ... но она не будет работать при попыткевыполнить ... и теперь я волнуюсь, у меня есть поврежденный файл или что-то, что заставило Codeblocks перестать работать.Любые идеи, что происходит и как я могу заставить Codeblocks правильно работать снова?

Вот программа:

#include <iostream>
#include <cstdio>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main()
{
srand(time(0));

int Roll1, Roll2, UserRoll, Roll3, Roll4, ComputerRoll;
char Hold;
char PlayAgain;

    do
    {
      Roll1 = 1+(rand()%6);
      Roll2 = 1+(rand()%6);
      UserRoll = Roll1 + Roll2;

        do
        {
            cout << "Beat the computer!" << endl;
            cout << "" << endl;
            cout << "You rolled a " << Roll1 << " and a " << Roll2 << "(total= " << UserRoll << ")" << endl;
            cout << "" << endl;
            cout << "Do you want to keep those? (Y/N): " << endl;
            cin >> Hold;

            if (Hold == 'N')
            {
                cout << "Rolling again! " << endl;
            }
        } while (Hold == 'N');

            if (Hold == 'Y')
            {
                cout << "You chose to keep your numbers. Your total is: " << UserRoll << endl;
            } break;

    }  while (true);

    do
    {
      Roll3 = 1+(rand()%6);
      Roll4 = 1+(rand()%6);
      ComputerRoll = Roll3 + Roll4;

        do
        {
            cout << "" << endl;
            cout << "The computer rolled a " << Roll3 << " and a " << Roll4 << endl;
            cout << "" << endl;
            cout << "(total= " << ComputerRoll << ")" << endl;

                if (ComputerRoll < UserRoll)
                {
                cout << "Congratulations, you win! " << endl;
                }
                break;

                if (ComputerRoll > UserRoll)
                {
                cout << "Sorry, you lose. " << endl;
                }
                break;

                if (ComputerRoll == UserRoll)
                {
                cout << "You tied. " << endl;
                }
                break;
        } while (true);
    } while (true);
return 0;

}

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Это «не отвечает», потому что ваша программа представляет собой бесконечный цикл:

do
{
  do
  {
    ...
    break; //exit this inner loop
  } while(true);
  // will continue here 
} while(true); // no way to get out!
0 голосов
/ 26 мая 2018

Посмотри в свои петли.Вы используете break вне if операторов.В результате вы прерываете свои do...while циклы сразу после первого if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...