【问题标题】:How to return to my Menu C++ [closed]如何返回我的菜单 C++ [关闭]
【发布时间】:2014-03-06 18:26:12
【问题描述】:

这是我的程序,我很抱歉,因为我只是一个菜鸟,所以我想问一下我如何返回菜单,因为我正在使用 switch 语句,我想在他/她完成转换后询问用户。查看程序中的注释。

#include <iostream>
#include <stdlib.h>
#include <conio.h>

using namespace std;

int main()
{
int option;
float C,F,result;
char rpt;

cout<<"Temperature Converter"
    <<"\n1.Celsius to Fahrenheit"
    <<"\n2.Fahrenheit to Celsius"
    <<"\n3.Exit"
    <<"\n\nEnter a number from 1 to 3: ";
cin>>option;

switch (option)
{
    case 1:
    system ("CLS"); 
    cout<<"Celsius to Fahrenheit!"<<endl;
    cout<<"\nEnter Celsius: ";
    cin>>C;

    result=C*9/5+32; 

    cout<<C<<" Celsius is equivalent to "<<result<<" Fahrenheit."<<endl<<endl;


    cout<<"Would you like to convert again? Type Y to try again OR N to exit. : ";
    cin>>rpt;

    if (rpt='Y')

    //What Code should i put here?


    break;

【问题讨论】:

  • 该程序甚至在语法上都无效...

标签: c++ loops menu return converter


【解决方案1】:

询问用户是否要重复的代码属于 switch 块之后。此外,您应该使用 == 运算符进行比较。所以像

do {

    // Get menu choice
    ...

    switch (option)
    {
        case 1:
            ...
             break;

        case 2:
            ...
            break;

        ...
    }

    cout<<"Would you like to convert again? Type Y to try again OR N to exit. : ";
    cin>>rpt;
} while (rpt == 'Y');

【讨论】:

    【解决方案2】:

    你应该使用循环。像这样:

    bool ended = false;
    while (!ended)
    {
        //some code
    }
    

    如果答案是 N,则更改结束为真。

    或者,正如某些人喜欢的那样:

    bool ended;
    do
    {
        //some code
    } while(!ended);
    

    【讨论】:

    • 由于我们假设他在第一次通过循环之前永远不会中止,所以我的首选是do { ... /* maybe set ended = true; */ ... } while(!ended);
    【解决方案3】:

    将代码放入do while循环

    int main()
    {
       do {
       .....
       } while(rpt);// instead of if 
    
    } 
    

    【讨论】:

      【解决方案4】:

      您应该创建一个函数,显示菜单并返回所选选项 示例:

            int showMenu() {
            //Show menu
            //Read option
           //Return option
            }     
      

      【讨论】:

        【解决方案5】:
        // put the label Start below the declaration //
        
        if (rpt == 'Y')
        
        system ("CLS");
        goto Start;
        
        else
        
        exit (0);
        

        【讨论】:

        • 不只是给出代码,请解释逻辑。这使 OP 和其他读者都能了解解决方案背后的原理,并将其应用于他们的具体问题。
        • 请尝试为代码添加一些解释。会有帮助的
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多