пока l oop если и еще - PullRequest
       6

пока l oop если и еще

2 голосов
/ 15 апреля 2020

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

Моя цель состоит в том, чтобы l oop вернуться к функции выбора карты, если введены числа, отличные от 1,2 и 3.

Существует также для l oop, который позволяет этому процессу go примерно в несколько раз.

Как лучше и как это сделать?

int CardSelect() {

  cout << "Enter 1 for hearts" << endl;
  cout << " " << endl;
  cout << "Enter 2 for diamonds" << endl;
  cout << " " << endl;
  cout << "Enter 3 for joker" << endl;

  return 0;
};

int main() {
  for (int i = 1; i <= 5; i++) {
    CardSelect();
    int cardchoice;
    cin >> cardchoice;

    cardchoice = CardSelect();

    if (cardchoice == 1) {
      cout << "You got hearts" << endl;
      loop = false;
    } else if (cardchoice == 2) {
      cout << "You got diamonds" << endl;
      loop = false;
    } else if (cardchoice == 3) {
      cout << "You got joker" << endl;
      loop = false;
    } else {
      cout << "Invalid choice" << endl;
      cout << "Please ensure you type in the right numbers" << endl;
    }
  }
}

Ответы [ 3 ]

1 голос
/ 15 апреля 2020

Измените тип возврата CardSelect() на void, поскольку вы просто печатаете некоторые операторы в этой функции:

void CardSelect() 
{ // Your cout statements
}

Вызовите это в main() и используйте регистр переключения для вашей переменной cardchoice .

Если вы хотите продолжать выполнять оператор switch до тех пор, пока не получите действительный ввод, поместите все в inifinte l oop (например, while(1)) и установите условие выхода, установив логическое значение в true (установите его на false изначально) и используйте break, когда условие будет выполнено, чтобы выйти из l oop:

int main() 
{
  while(1)
  {
    bool valid = false;
    CardSelect(); // call to your function
    int cardchoice;
    cin >> cardchoice;

    switch(cardchoice)
    {
      case 1:      
      cout << "You got hearts" << endl;
      valid = true;
      break;

      case 2:     
      cout << "You got diamonds" << endl;
      valid = true;
      break;

      case 3:    
      cout << "You got joker" << endl;
      valid = true;
      break;

      default:
      cout << "Invalid choice" << endl;
      cout << "Please ensure you type in the right numbers" << endl;
      break;
    } if(valid) break;
  }
}
0 голосов
/ 15 апреля 2020

Вы не должны звонить cardchoice = CardSelect();.

Этот вызов перезаписывает cardchoice на 0. Удалите этот вызов.

Вы печатаете значения, чтобы увидеть, что происходит. Это хороший способ обучения. Надеюсь, это поможет.

0 голосов
/ 15 апреля 2020

Во-первых, вы ищете continue, во-вторых, вам нужно избавиться от этой строки, которая не имеет смысла: cardchoice = CardSelect();, поскольку она стирает пользовательский ввод

int CardSelect() {
    cout << "Enter 1 for hearts" << endl;
    cout << " " << endl;
    cout << "Enter 2 for diamonds" << endl;
    cout << " " << endl;
    cout << "Enter 3 for joker" << endl;

    return 0;


};



int main() {

for (int i = 1; i <= 5; i++) {
    CardSelect();
    int cardchoice;
    cin >> cardchoice;


    if (cardchoice == 1) {
        cout << "You got hearts" << endl;
    }

    else if (cardchoice == 2) {
        cout << "You got diamonds" << endl;

    }

    else if (cardchoice == 3) {
        cout << "You got joker" << endl;
    }

    else {
        cout << "Invalid choice" << endl;
        cout << "Please ensure you type in the right numbers" << endl;
    }
}

}
...