c++ - 我可以使用开关来保持功能吗?

标签 c++ math switch-statement

我有一个 3 文件程序,基本上是自学 C++。我有一个问题。我切换到使用数学函数。我需要并将它放在一个变量中,但由于某种原因,结果我得到了一个零。

还有另一个问题,当我选择 4(除法)时它崩溃了...有什么原因吗?

主文件:

#include <iostream>
#include "math.h"
#include <string>

using namespace std;

int opersel;
int c;
int a;
int b;
string test;

int main(){

cout << "Welcome to Math-matrix v.34"<< endl;
cout << "Shall we begin?" <<endl;

//ASK USER IF THEY ARE READY TO BEGIN 

string answer;
cin >> answer;

if(answer == "yes" || answer == "YES" || answer == "Yes")
{

           cout << "excellent lets begin..." << endl;

           cout << "please select a operator..." << endl  << endl;


           cout << "(1) + " << endl;
           cout << "(2) - " << endl;
           cout << "(3) * " << endl;
           cout << "(4) / " << endl;

           cin >> opersel;

           switch(opersel){

                  case 1:
                  c = add(a,b);
                  break;
                  case 2:
                  c = sub(a,b);
                  break;
                  case 3:
                  c = multi(a,b);
                  break;
                  case 4:
                  c = divide(a,b);
                  break;
                  default:
                  cout << "error... retry" << endl;

                  }// end retry


           cout << "alright, how please select first digit?" << endl;

           cin >> a;

           cout << "excellent... and your second?" << endl;

           cin >> b;

           cout << c;

           cin >> test;

           }else if (answer == "no" || answer == "NO" || answer == "No"){


                 }//GAME ENDS








}// end of int main 

这是我的math.h 文件

#ifndef MATH_H
#define MATH_H

int add(int a, int b);


int sub(int a, int b);



int multi(int a, int b);


int divide(int a, int b);

#endif

这是我的math.cpp:

int add(int a, int b)
{

 return a + b;   

}

int sub(int a, int b)
{

 return a - b;   

}

int multi(int a, int b)
{

 return a * b;   

}

int divide(int a, int b)
{

 return a / b;   

}






}// end of int main 

最佳答案

在从用户那里获取数据之前,您使用 a 和 b 调用您的函数。尝试保存他们在输入时选择的数学函数,并在要求他们输入 a 和 b 后将开关移至。

#include <iostream>
#include "math.h"
#include <string>

using namespace std;

int opersel;
int c;
int a;
int b;
string test;

int main(){

cout << "Welcome to Math-matrix v.34"<< endl;
cout << "Shall we begin?" <<endl;

//ASK USER IF THEY ARE READY TO BEGIN 

string answer;
cin >> answer;

if(answer == "yes" || answer == "YES" || answer == "Yes")
{

           cout << "excellent lets begin..." << endl;

           cout << "please select a operator..." << endl  << endl;


           cout << "(1) + " << endl;
           cout << "(2) - " << endl;
           cout << "(3) * " << endl;
           cout << "(4) / " << endl;

           cin >> opersel;              

           cout << "alright, how please select first digit?" << endl;

           cin >> a;

           cout << "excellent... and your second?" << endl;

           cin >> b;

           switch(opersel){

                  case 1:
                  c = add(a,b);
                  break;
                  case 2:
                  c = sub(a,b);
                  break;
                  case 3:
                  c = multi(a,b);
                  break;
                  case 4:
                  c = divide(a,b);
                  break;
                  default:
                  cout << "error... retry" << endl;

           }// end retry

           cout << c;

           cin >> test;

           }else if (answer == "no" || answer == "NO" || answer == "No"){       
                 }//GAME ENDS   
}// end of int main 

关于c++ - 我可以使用开关来保持功能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2961488/

相关文章:

java - 有 Intent 的 case 语句 switch

c++ - std::set 引用外部值的比较器

c++ - C++指针在for循环中被覆盖

c# - C# 中的标准正态分布 z 值函数

objective-c - 如何搜索有关数值宏的文档?

c - switch 语句汇编代码到c

c++ - 如何在创建新对象时使用 = 运算符?

c++ - 如何用微秒创建时间戳

javascript - After Effects 中是否有一个编程/数学术语来说明 Linear() 函数的作用?

c# - 为什么我需要使用 break?