как продолжить работу функции без выхода после оператора else в c ++

0

Привет, поэтому мой вопрос: как я могу продолжить работу с новыми вводами после инструкции else? В моей программе я написал оператор else, который, если вход не является ни 1, ни 2, пользователь должен поместить новое значение, чтобы получить результат, который он хочет. Но после моего другого заявления моя программа отключается. Я не знаю, как это исправить. Я очень новичок в c++, поэтому, пожалуйста, держите суровые комментарии к себе... Вот мой код:

// This program will allow the user to input from the keyboard 
// whether the last word to the following proverb should be party or country:
// "Now is the time for all good men to come to the aid of their _______"
// Inputting a 1 will use the word party. A 2 will use the word country.



#include <iostream>
#include <string>
using namespace std;


void writeProverb(int);


int main ()
 {

int wordCode;

cout << "Given the phrase:" << endl;
cout << "Now is the time for all good men to come to the aid of their ___" << endl;
cout << "Input a 1 if you want the sentence to be finished with party" << endl;
cout << "Input a 2 if you want the sentence to be finished with country." << endl;
cout << "Please input your choice now" << endl;
cin  >> wordCode;
cout << endl;
    writeProverb(wordCode);

return 0;
}



 void writeProverb (int number)


{
if (number == 1)
    cout << "Now is the time for all good men to come to the aid of their      party." << endl;

else if (number == 2)   
    cout << "Now is the time for all good men to come to the aid of their country." << endl;

else
{
    cout << "I'm sorry but that is an incorrect choice: Please input a 1 or 2"  << endl;
 } 


 }

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

  • 0
    отформатируйте свой код перед публикацией.
  • 0
    Буду осторожнее в следующий раз. Спасибо за совет.
Теги:

4 ответа

5
do {
    cout << "Please input your choice now" << endl;
    cin  >> wordCode;
    cout << endl;
    writeProverb(wordCode);
}while (wordCode != 1 && wordCode != 2);

Этот код выходит, если пользователь вводит 1 или 2. Остается в другом месте.

  • 0
    Большое спасибо, Шакти. Я пытался сделать это раньше, но моя ошибка состояла в том, чтобы оставить «writeProverb (wordCode)» вне цикла. Очевидно, это не сработало, поэтому я подумал: пока это был не тот способ. Мне определенно нужно поближе познакомиться с петлями. Я ценю вашу помощь!
1

Вы хотите иметь конструкцию do-while пока не получите юридическую ценность, как уже указывал Сакти Кумар.

Тем не менее, вы не хотите переводить знания о том, какое юридическое значение имеет основное значение. Поэтому writeProverb метод writeProverb если это значение является законным или нет. Это держит вещи в правильном уровне абстракции. Вы также должны рассмотреть возможность обновления печати "меню" с помощью объекта, таким образом связывая все вместе.

// ... in main()
    do {
        cout << "Please input your choice now" << endl;
        cin  >> wordCode;
        cout << endl;
        writeProverb(wordCode);
    } while( !writeProverbIfLegalNumber(wordCode) );
}

bool writeProverbIfLegalNumber (int number) {
    if (number == 1) {
        cout << "Now is the time for all good men to come to the aid of their      party." << endl;
        return true;
    }
    else if (number == 2) {
        cout << "Now is the time for all good men to come to the aid of their country." << endl;
        return true;
    }
    else
    {
        cout << "I'm sorry but that is an incorrect choice: Please input a 1 or 2"  << endl;
    } 
    return false;
}
  • 0
    Я не уверен, что объект был бы хорошей идеей, так как это, кажется, базовые вещи начального уровня. Слишком быстрое движение может привести к путанице. Мне нравится идея сохранить решение "это законно или нет?" в writeProverb , тем не менее, +1 за это.
  • 0
    Компьютерный фрикер прав, это очень простой материал начального уровня ... На самом деле не выучил булеву, но все равно спасибо за вашу помощь!
0

в этом случае вы можете поместить утверждение суждения в "главную" функцию. Вы можете использовать инструкцию "while" для управления логикой.

boolean flag = true;
while(flag){
    cout<<"input";
    cin>>wordCode;
    if(wordCode==1 || wordCode==2){
        flag=false;
        writeProverb(wordCode);
    }
} 
0

Это основная логика, вы должны прочитать о циклах и о том, как их использовать. Это в while цикл продолжается, пока не wordCode от 1 до 2 включительно; другими словами, он продолжается до тех пор, пока вы не получите 1 или 2.

int main ()
{

    int wordCode;

    cout << "Given the phrase:" << endl;
    cout << "Now is the time for all good men to come to the aid of their ___" << endl;
    cout << "Input a 1 if you want the sentence to be finished with party" << endl;
    cout << "Input a 2 if you want the sentence to be finished with country." << endl;



    do
    {
       cout << "Please input your choice now 1 or 2: " << endl;
       cin  >> wordCode;

    } while(!(1 <= wordCode && wordCode <=2));

    cout <<endl;
    writeProverb(wordCode);

    return 0;
}
  • 1
    Я не уверен, что они действительно хотят, чтобы программа потенциально продолжалась бесконечно. Технически они могут просто закрыть командную строку, но обычно есть возможность разорвать цикл и выйти, так же как и ответ Шакти Кумара выше.
  • 0
    Я знаю это, но я думаю, что кто-то просто пытается сделать свою домашнюю работу бесплатно. Вы не можете научить кого-то думать, давая ему / ей решение.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню