Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 返回菜单C+时如何不更新开关语句+;_C++ - Fatal编程技术网

C++ 返回菜单C+时如何不更新开关语句+;

C++ 返回菜单C+时如何不更新开关语句+;,c++,C++,输入数字后,当我返回菜单并计算出正确的和时,它输出。但当我再次返回并再次输入case2时,输出值会加倍 示例:我输入1,2,3,4,5 cin>>返回//返回菜单//选择2。求和//求和为15//再次返回菜单选择2//现在的求和为4//同时也是平均值的两倍 我还没有完成其他部分的学习,因为我的教授希望我们使用函数。我如何解决这个问题,使返回时的值不加倍?还有一件事,我的教授想在我选择案例2-5时显示错误信息,而不是先选择案例1来输入数字 #include<iostream> #inc

输入数字后,当我返回菜单并计算出正确的和时,它输出。但当我再次返回并再次输入case2时,输出值会加倍

示例:我输入1,2,3,4,5 cin>>返回//返回菜单//选择2。求和//求和为15//再次返回菜单选择2//现在的求和为4//同时也是平均值的两倍

我还没有完成其他部分的学习,因为我的教授希望我们使用函数。我如何解决这个问题,使返回时的值不加倍?还有一件事,我的教授想在我选择案例2-5时显示错误信息,而不是先选择案例1来输入数字

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

using namespace std;

int list(int *listinput);
int printSum(int array[],int a);
int printAverage(int array[],int inputSize);
int ave, sum = 0;

main(){
   int input,menu,low,high;
   int sum1;
   char r;
   int array[100];

   cout << "Enter how many nos to be input: " << endl;
   cin >> input;

   do {

   cout << "\nMENU" << endl;
   cout << "1.Input a list" << endl;
   cout << "2.Sum" << endl;
   cout << "3.Average" << endl;
   cout << "4.Lowest Number" << endl;
   cout<<"5.Highest Number"<<endl;
   cout<<"6.Exit"<<endl;
   cout<<"Select from the menu:";
   cin>>menu;
   switch(menu){
                     case 1:

                          cout<<"\nEnter "<<input<<" nos: ";
                          for(int i=0;i<input;i++){
                           list(&array[i]);
                            }
                          cout<<" The inputted nos: ";
                          for(int i=0;i<input;i++){
                                  cout<<" "<<array[i];
                                  }
                          cout<<"\nEnter r/R to return to the menu";
                          cin>>r;
                          system("cls");
                            break;
                     case 2:

                          cout<<"The Sum is: "<<printSum(array,input);

                          cout<<"\nEnter r/R to return to the menu";
                          cin>>r;
                          system("cls");
                                  break;
                     case 3:

                          cout<<"Average is: "<<printAverage(array,input);
                          cout<<"\nEnter r/R to return to the menu";
                          cin>>r;
                          system("cls");
                          break;
                     case 4:

                           low=array[0];
                           for(int i=0;i<input;i++){
                           if(low>array[i])
                           low=array[i];
                           }
                           cout<<"Lowest Number is: "<<low;
                           cout<<"\nEnter r/R to return to the menu";
                           cin>>r;
                           system("cls");
                           break;
                     case 5:
                          high=array[0];

                          for(int i=0;i<input;i++){

                           if(high<array[i])
                           high=array[i];

                           }
                           cout<<"Highest Number is: "<<high;
                           cout<<"\nEnter r/R to return to the menu";
                           cin>>r;
                           system("cls");
                           break;
                           case 6:

                                break;


                          default:
                                  cout<<"Invalid input";
                     }}
                     while(r=='r'||r=='R');
   getch();
   }
  int list(int *listinput){
  cin>> *listinput;}

  int printSum( int array[],int a )
 {
 for (int i = 0; i <a; i++)
 {

    sum += array[i];
 }

return sum;
}

int printAverage( int array[],int inputSize )
{
     for (int i = 0; i <inputSize; i++)
     {
         sum += array[i];
         ave=sum/inputSize;
     }

     return ave;
 }
#包括
#包括
#包括
使用名称空间std;
int list(int*listinput);
int printSum(int数组[],int a);
int printAverage(int数组[],int inputSize);
int ave,总和=0;
main(){
int输入,菜单,低,高;
int sum1;
字符r;
整数数组[100];
不能输入;
做{

cout您的基本问题是变量sum是全局的-这意味着在调用函数printsum后,它的值被保留


您应该在printsum函数中声明sum;然后它将是一个局部变量。这意味着您每次都会得到一个“新”变量。一般来说,如果可以的话,最好使用局部变量;全局变量几乎总是不好的样式或完全错误。

此代码的格式或缩进不太好,这使得它很难阅读。我认为nk与“问题”相比,代码是一件轻而易举的事。我开始修复代码,但修复所有代码是一场噩梦。我建议现在结束这个问题。。。