2017-04-05 47 views
0

我給出了以下問題。如何讓我的程序再次運行C++

寫菜單驅動程序有以下選項:

  1. 添加新的價值
  2. 搜索值
  3. 修改值
  4. 打印值
  5. 所有值的
  6. 打印和
  7. 退出/終止

您必須創建五個選項作爲五個函數。添加另一個功能來顯示菜單選項。

這裏是我的代碼:

#include<iostream> 
using namespace std; 
float f[100]={0}; 
    //1st option 
void AddNewValue(){int input; 
cout<<"Enter a value\n"; 
cin>>f[input]; 
} 
//2nd option 
void SearchValue(){int i, search; 
    cout<<"Enter a value to search\n"; 
    cin>>search; 
    int match=0; 
    for (int i=1;i<=100;i++) 
    {if (f[i]==search) 
    {match=1; 
    break;} 
    } 
    if (match==1){cout<<"Matched value found\n"; 
    } 
    else {cout<<"No match found\n";}   
} 
//3rd option 
void ModifyValue(){int input1; 
    cout<<"Enter the position at which you want to modify value\n"; 
    cin>>input1; 
    cout<<"Enter a value\n"; 
    cin>>f[input1-1]; 
} 
//4th option 
void PrintValue(){int i; 
for (i=1;i<=100;i++) 
    {cout<<f[i]<<' ';} 
} 
//5th option 
void PrintSum(){int i,sum; 
    for(i=1;i<=100;i++) 
    {sum=f[i]+f[i+1];} 
    cout<<"Sum is : "<<sum; 
} 
//starting Function 
void menu(){int x; 
    cout<<"Enter an option: \n"; 
    cout<<"1- Add new value\n2- Search Value\n3- Modify value\n4- Print Value\n5- Print sum of all values\n6- Quit/terminate\n"; 
    cin>>x; 
    if(x==1){ 
     AddNewValue(); 
    } 
    else if (x==2){ 
     SearchValue(); 
    } 
    else if(x==3){ 
     ModifyValue(); 
    } 
    else if(x==4){ 
     PrintValue(); 
    } 
    else if(x==5){ 
     PrintSum(); 
    } 
    else{ 
    } 
} 
int main(){ 

     menu(); 
} 

,我想一次又一次讓我完全的程序運行,直到用戶輸入了錯誤的選擇。提供給您

+4

如果您想要重複某些操作,尤其是如果您不知道綁定,則可以使用循環。 – NathanOliver

+0

但我不能使用循環,因爲我只調用了menu();函數在主 –

+6

@JawadAdil因此,圍繞調用'menu()'的循環。讓它返回一些東西,說一個'bool',指出程序是繼續還是退出。 – BoBTFish

回答

1

一種選擇是創建一個while循環封裝的menu()函數體,並使用break;如果用戶輸入6

void menu(){ 
    int x = 0; 
    while(1){ 
     cin >> x; 
     //your code here 
     if(x==6) 
      break; 
    } 
} 

這個例子會導致你的菜單重複,直到用戶輸入6.

break;的目的是爲了從while循環中'打破'。在這種情況下,中斷將結束您的menu()並返回到main()

此外,最好將return 0;添加到主函數的末尾。

+0

'main'是* special *,最後不需要'return 0;'。如果缺少,則需要編譯器爲您添加它。 – NathanOliver

0

如果用戶選擇了正確的選項,請再次調用菜單功能。否則,將控制返回到main。我認爲這可能有效。

int menu(){int x; 
    cout<<"Enter an option: \n"; 
    cout<<"1- Add new value\n2- Search Value\n3- Modify value\n4- Print Value\n5- Print sum of all values\n6- Quit/terminate\n"; 
    cin>>x; 
    if(x!=1||x!=2||x!=3||x!=4||x!=5) return 0; 
    if(x==1){ 
     AddNewValue(); 
    } 
    else if (x==2){ 
     SearchValue(); 
    } 
    else if(x==3){ 
     ModifyValue(); 
    } 
    else if(x==4){ 
     PrintValue(); 
    } 
    else if(x==5){ 
     PrintSum(); 
    } 
    menu(); 
} 

你也可以將你的代碼包裝在一個do-while循環中。

void menu(){ 
    do{ 
     int x; 
     cout<<"Enter an option: \n"; 
     cout<<"1- Add new value\n2- Search Value\n3- Modify value\n4- Print Value\n5- Print sum of all values\n6- Quit/terminate\n"; 
     cin>>x;  
     if(x==1){ 
      AddNewValue(); 
     } 
     else if (x==2){ 
      SearchValue(); 
     } 
     else if(x==3){ 
      ModifyValue(); 
     } 
     else if(x==4){ 
      PrintValue(); 
     } 
     else if(x==5){ 
      PrintSum(); 
     } 

    }while(x==1||x==2||x==3||x==4||x==5); 
} 
+0

這是什麼代碼格式?你真的覺得遞歸是循環的正確方法嗎? – Default

+0

我會''轉到函數的開始。或者['longjump()'](https://linux.die.net/man/3/longjmp),但這只是我的看法。 – YSC

0

保持簡單。負責顯示菜單的功能只應顯示菜單並返回用戶的選擇。

enum choice 
{ 
    ADD_NEW_VALUE, 
    SEARCH_VALUE, 
    // ... 
    QUIT 
}; 

choice menu() 
{ 
    choice result = QUIT; 
    // display menu 
    // input choice 
    // (the more I think about it, the more I'd split it in two separate functions) 
    return result; 
} 

int main() 
{ 
    while (true) { 
     switch (menu()) 
     { 
     case ADD_NEW_VALUE: AddNewValue(); break; 
     // ... 
     case QUIT: return 0; 
     } 
    } 
} 

這有助於menu()的測試,並使其更容易添加新的選擇和新功能。

1

您可以使用循環並使其運行,直到用戶給出特定輸入。在下面的代碼中,一旦程序運行,然後它會要求用戶輸入5退出或任何其他鍵再次運行,如果用戶輸入5作爲輸入,則它將停止,或者如果用戶給出任何其他輸入,則程序將運行再次。

希望它是明確的,並幫助你。

#include<iostream> 
using namespace std; 
float f[100]={0}; 
    //1st option 
void AddNewValue(){int input; 
cout<<"Enter a value\n"; 
cin>>f[input]; 
} 
//2nd option 
void SearchValue(){int i, search; 
    cout<<"Enter a value to search\n"; 
    cin>>search; 
    int match=0; 
    for (int i=1;i<=100;i++) 
    {if (f[i]==search) 
    {match=1; 
    break;} 
    } 
    if (match==1){cout<<"Matched value found\n"; 
    } 
    else {cout<<"No match found\n";}   
} 
//3rd option 
void ModifyValue(){int input1; 
    cout<<"Enter the position at which you want to modify value\n"; 
    cin>>input1; 
    cout<<"Enter a value\n"; 
    cin>>f[input1-1]; 
} 
//4th option 
void PrintValue(){int i; 
for (i=1;i<=100;i++) 
    {cout<<f[i]<<' ';} 
} 
//5th option 
void PrintSum(){int i,sum; 
    for(i=1;i<=100;i++) 
    {sum=f[i]+f[i+1];} 
    cout<<"Sum is : "<<sum; 
} 
//starting Function 
void menu(){int x; 
    cout<<"Enter an option: \n"; 
    cout<<"1- Add new value\n2- Search Value\n3- Modify value\n4- Print Value\n5- Print sum of all values\n6- Quit/terminate\n"; 
    cin>>x; 
    if(x==1){ 
     AddNewValue(); 
    } 
    else if (x==2){ 
     SearchValue(); 
    } 
    else if(x==3){ 
     ModifyValue(); 
    } 
    else if(x==4){ 
     PrintValue(); 
    } 
    else if(x==5){ 
     PrintSum(); 
    } 
    else{ 
    } 
} 
int main(){ 

int repeater; 
do{ 
     menu(); 
cout<<"Enter 5 to exit or any other key to run the program again :"; 
cin>>repeater; 
}while(repeater != 5); 
} 
相關問題