2015-03-25 50 views
-1

我想要一个名为“userPrompt”的函数,并要求用户输入一个名为“choose”的整数值,以便我可以使用switch语句。Switch Statement - 嵌套函数 - 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()'中的另一个变量。代码中有更多的语法错误。 – 2015-03-25 07:59:35

+0

谢谢你的回答,我在C++上也是新手,在编程方面也是新的。它会越来越好,我希望:) 我会解决它的。谢谢。 – Recomer 2015-03-25 08:12:45

回答

0

你忘了coloncase,你也需要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 2015-03-25 08:14:29

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 2015-03-25 08:15:18

+0

这是一样的,我们同时发布了我们的代码。但是请帮我一个忙,并且upvote ;-) – 2015-03-25 08:20:09

0

简单的错误。把冒号放在case 1:那样的情况下

`初始化选择并尝试它。

int choose = o;

1

C++使用的 “范围”,其种类的转化的变量 “可视性”。 userPrompt()函数的“choose”变量只在userPrompt()函数的作用域内“可见”(触手可及)。

所以,你可以声明userPrompt()函数

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

然后里面的main(),你会做这样的事情:

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

感谢您的技术解释,我会记住它。 – Recomer 2015-03-25 08:17:12

0

在C++中每个函数都有一个返回类型。这意味着它会返回一些东西或返回void(即不返回)。在你的程序中,userPrompt没有返回类型,既没有void也没有任何其他返回类型,因此这部分是程序中的第一个错误。 下一个错误是,在开关声明任何情况下标签后标签后面必须跟一个冒号“:”

+0

非常感谢! – Recomer 2015-03-26 09:05:14