C ++ Beginner: незначительные проблемы с функциями - PullRequest
0 голосов
/ 29 апреля 2020

Я только начал изучать C ++ и не обладал никаким техническим опытом, поэтому, пожалуйста, будьте терпеливы со мной! Я использую Codecademy для обучения и столкнулся с проблемой при выполнении одного из упражнений. Я попытался создать эту функцию для удаления повторяющегося кода в main().

#include <iostream>
std::string on_off_attempt;
std::string IT_support(){
  std::cout << "Hello. IT\n";
  std::cout << "Have you tried turning it off and on again? y/ n\n";
  std::cin >> on_off_attempt;
  if (on_off_attempt == "y"){
    std::cout << "It should be working now!\n";
  }
  else if (on_off_attempt == "n"){
   std::cout << "Then please try again!\n";
  }
  else {
    std::cout << "Invalid Input!\n";
    std::cin >> on_off_attempt;
  }
  return on_off_attempt;
  }

. Что касается первого ввода, он работает нормально, но при следующем запросе ввода он больше не подтверждает ввод для on_off_attempt и сразу просто переходит к следующей выходной строке. Ниже приведен код main().

int main() {

  // Conduct IT support
  IT_support();

  // Check in with Jenn
  std::cout << "Oh hi Jen!\n";

  // Conduct IT support again...
 IT_support();

  // Check in with Roy
  std::cout << "You stole the stress machine? But that's stealing!\n";

  // Conduct IT support yet again...zzzz...
  IT_support();
}

Может кто-нибудь сказать мне, что я делаю неправильно? Любая помощь будет оценена! :)

1 Ответ

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

Причина, по которой он переходит непосредственно к следующей строке вывода, заключается в том, что вы никогда не говорите ему продолжать запрашивать ввод, пока он не получит действительный. Для этого вам понадобится все 1003 *. Как то так:

std::string IT_support(){
  std::string on_off_attempt;
  bool inputValid = false;
  std::cout << "Hello. IT\n";
  std::cout << "Have you tried turning it off and on again? y/ n\n";
  while (!inputValid) {
    std::cin >> on_off_attempt;
    if (on_off_attempt == "y"){
      std::cout << "It should be working now!\n";
      inputValid = true;
    }
    else if (on_off_attempt == "n"){
      std::cout << "Then please try again!\n";
      inputValid = true;
    }
    else {
      std::cout << "Invalid Input!\n";
      inputValid = false;
    }
  }
  return on_off_attempt;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...