2015-03-25 7 views
-1

Я хочу иметь функцию под названием «userPrompt» и запрашивать у пользователя значение целое с именем «выбрать», после чего я смогу использовать оператор switch.Оператор switch - Вложенные функции - C++

Но он не работает, он говорит: «выберите» необъявленный.

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

В чем проблема с этим кодом?

Как я могу использовать вложенные функции? (Я надеюсь, что это называется так)

Является ли заказ моего кода не так?

Любая помощь будет оценена по достоинству.

userPrompt(){ 

    int choose; 

    cout << " Please Choose An Option : " << endl; 
    cout << " Type 1 to Add new grades : " << endl; 
    cout << " Type 2 to Calculate the average grades : " << endl; 
    cout << " Type 3 to Calculate the total grades : " << endl; 
    cout << " Type 4 to Exit : " << endl;  

    cin >> choose; 

} 

    int main() 
    { 

     userPrompt(); 

     switch(choose){ 

     case 1 
      getGrade(); 
      userPrompt(); 
      break; 

     case 2 

      int average; 
      getGrade(); 

      average = total/counter; 

      cout << average; 

      break;  

     case 3 

      getGrade(); 
      cout << total; 
      break; 

     case 4 

      cout << "Thanks for Trying" << endl; 

      return 0; 

      system("pause"); 

      break; 

     default 

      cout << "Please Choose A Valid Option ! : " << endl; 
      validOption(); 

     } 
    } 
+0

'choose' объявлена ​​только локально в' userPrompt() 'вам нужно' возвращение 'оператор или выходной параметр, чтобы передать значение другой переменной внутри' main() '. В вашем коде есть еще много синтаксических ошибок. –

+0

Спасибо за ваш ответ, я новичок в C++, также новичок в программировании. Я буду лучше, надеюсь :) Я исправлю это. Спасибо. – Recomer

ответ

0

Вы забыли поставить colon в вашем case, а также вы должны return choose.

case 1: 

Попробуйте это:

int userPrompt(){ 

int choose; 

cout << " Please Choose An Option : " << endl; 
cout << " Type 1 to Add new grades : " << endl; 
cout << " Type 2 to Calculate the average grades : " << endl; 
cout << " Type 3 to Calculate the total grades : " << endl; 
cout << " Type 4 to Exit : " << endl;  

cin >> choose; 
return choose; 
} 
int main() 
{ 

    int choose = userPrompt(); 

    switch(choose){ 

    case 1: 
     getGrade(); 
     userPrompt(); 
     break; 

    case 2: 

     int average; 
     getGrade(); 

     average = total/counter; 

     cout << average; 

     break;  

    case 3: 

     getGrade(); 
     cout << total; 
     break; 

    case 4: 

     cout << "Thanks for Trying" << endl; 

     return 0; 

     system("pause"); 

     break; 

    default: 

     cout << "Please Choose A Valid Option ! : " << endl; 
     validOption(); 

    } 
} 
+0

Спасибо, что исправил мою проблему.Несмотря на то, что у меня появились новые проблемы, я знаю, как их исправить из-за этой ситуации! – Recomer

0

изменить код следующим образом:

int userPrompt(){ //--> changed into a function returning the choice 

    int choose; 

    cout << " Please Choose An Option : " << endl; 
    cout << " Type 1 to Add new grades : " << endl; 
    cout << " Type 2 to Calculate the average grades : " << endl; 
    cout << " Type 3 to Calculate the total grades : " << endl; 
    cout << " Type 4 to Exit : " << endl;  

    cin >> choose; 
    return choose; 
} 

int main() 
{ 
    //--> declare choose in main and assign a value using the function call 
    int choose = userPrompt(); 

    switch(choose){ 

    case 1: 
     getGrade(); 
     userPrompt(); 
     break; 

    case 2: 

     int average; 
     getGrade(); 

     average = total/counter; 

     cout << average; 

     break;  

    case 3: 

     getGrade(); 
     cout << total; 
     break; 

    case 4: 

     cout << "Thanks for Trying" << endl; 

     return 0; 

     system("pause"); 

     break; 

    default 

     cout << "Please Choose A Valid Option ! : " << endl; 
     validOption(); 

    } 
} 
+0

Я тоже попробую. Это похоже на предыдущий код, отправленный Rahul Tripathi :) – Recomer

+0

То же самое, мы отправили наш код одновременно. Но сделайте мне одолжение и возвышение ;-) –

0

Простая ошибка. положить двоеточие в случаях case 1: примерно

`intialize выберите сначала и попробуйте.

int choose = o;

1

С ++ использует «объем», который переводит вид в «видимости» переменных. Переменная «choose» вашей функции userPrompt() является только «видимой» (в пределах досягаемости) внутри области действия функции userPrompt().

Таким образом, вы могли бы объявить функцию userPrompt(), как

int userPrompt() // Returns the user choice 
{ 
    ... // your existing code here 
    return choose; 
} 

Тогда внутри основной() вы могли бы сделать что-то вроде:

int main() 
{ 
    int choice = userPrompt(); 
    switch(choice) 
    ... 
+0

Спасибо за ваше техническое объяснение, я сохраню это в своем уме. – Recomer

0

В C++ каждая функция имеет тип возвращаемого значения. Это означает, что он вернет что-то или вернет пустоту (т. Е. Ничего не вернет). В вашей программе userPrompt не имеет типа возврата ни пустого, ни другого типа возврата, поэтому эта часть является первой ошибкой в ​​вашей программе. Следующая ошибка в том, что после каждого случая метки в переключатель заявление, что этикетка должна сопровождаться двоеточием «:»

+0

Спасибо вам большое! – Recomer

Смежные вопросы