我是C ++的新手,在大学课程中学习它,我们刚刚开始运作,这是我第一个处理它们的实验室。我一直在我的switch语句中为每个案例收到此错误,我不确定如何纠正它。
错误:函数'void addFraction(int,int,int,int)'
的参数太少
#include <iostream>
#include <cstdlib>
using namespace std;
void clearScreen();
void printMenu();
void getFraction(int&, int&);
void addFraction(int, int, int, int);
void subFraction(int, int, int, int);
void mulFraction(int, int, int, int);
void divFraction(int, int, int, int);
//void reducFraction(int &, int &);
int main()
{
clearScreen();
printMenu();
return 0;
}
//Function clears the screen
void clearScreen()
{
cout << string(50, '\n');
}
//Function prints a menu to the screen
void printMenu()
{
int menu;
cout << "Fraction Calculator\n";
cout << "\n";
cout << "1. Add Fraction\n";
cout << "2. Subtract Fraction\n";
cout << "3. Multiply Fraction\n";
cout << "4. Divide Fraction\n";
cout << "5. Quit\n";
cout << ":";
cin >> menu;
//Switch statement that drive the menu
switch (menu)
{
case '1': addFraction();
break;
case '2': subFraction();
break;
case '3': mulFraction();
break;
case '4': divFraction();
break;
case '5': exit(0);
break;
default: {
cout << endl << "Invalid choice\n" << endl;
printMenu();
}
}
}
void addFraction(int f1n, int f1d, int f2n, int f2d)
{
clearScreen();
getFraction(f1n, f1d);
getFraction(f2n, f2d);
int fan, fad;
fan = (f1n * f2d) + (f2n * f1d);
fad = (f1d * f2d);
//reducFraction();
cout << fan << endl << "---" << endl << fad;
}
void subFraction(int f1n, int f1d, int f2n, int f2d)
{
clearScreen();
getFraction(f1n, f1d);
getFraction(f2n, f2d);
int fan, fad;
fan = (f1n * f2d) - (f2n * f1d);
fad = (f1d * f2d);
//reducFraction();
cout << fan << endl << "---" << endl << fad;
}
void mulFraction(int f1n, int f1d, int f2n, int f2d)
{
clearScreen();
getFraction(f1n, f1d);
getFraction(f2n, f2d);
int fan, fad;
fan = (f1n * f2n);
fad = (f1d * f2d);
//reducFraction();
cout << fan << endl << "---" << endl << fad;
}
void divFraction(int f1n, int f1d, int f2n, int f2d)
{
clearScreen();
getFraction(f1n, f1d);
getFraction(f2n, f2d);
int fan, fad;
fan = (f1n * f2d);
fad = (f2n * f1d);
//reducFraction();
cout << fan << endl << "---" << endl << fad;
}
void getFraction(int& numerator, int& denominator)
{
cout << "Please enter a numerator: ";
cin >> numerator;
cout << "Please enter a denominator: ";
cin >> denominator;
while(denominator == 0)
{
cout << "Invalid denominator! Enter a new one: ";
cin >> denominator;
}
clearScreen();
}
答案 0 :(得分:1)
尝试:
case '1':
addFraction(1, 2, 3, 4);
break;
正如您的代码中的注释所述,您使用未声明的变量调用该方法。
答案 1 :(得分:1)
您可以在没有任何参数的情况下调用函数
switch (menu)
{
case '1': addFraction();
break;
case '2': subFraction();
break;
case '3': mulFraction();
break;
case '4': divFraction();
break;
case '5': exit(0);
//...
虽然函数被声明为具有多个参数
void addFraction(int, int, int, int);
void subFraction(int, int, int, int);
void mulFraction(int, int, int, int);
void divFraction(int, int, int, int);
您必须为函数调用提供必需的参数。
实际上你可以声明没有参数的函数。例如
void addFraction()
{
int f1n, f1d;
int f2n, f2d;
clearScreen();
getFraction(f1n, f1d);
getFraction(f2n, f2d);
int fan, fad;
fan = (f1n * f2d) + (f2n * f1d);
fad = (f1d * f2d);
//reducFraction();
cout << fan << endl << "---" << endl << fad;
}
以同样的方式可以定义(和声明)其他功能。
答案 2 :(得分:0)
调用函数时请输入参数值。 例如:
case '1': addFraction(1,2,3,4);
break;
答案 3 :(得分:0)
您已声明了addFraction函数,因此它需要四个参数。
list
在switch语句中调用它时,提供0个参数。
void addFraction(int f1n, int f1d, int f2n, int f2d)
您必须传递函数4参数。例如,以下是有效的呼叫:
addFraction();
答案 4 :(得分:0)
您使用的所有函数都有要传递的参数,而当您从switch case调用函数时,您没有传递任何参数。
您必须先从用户那里获取分数,然后调用函数来操作分数。
案例&#39; 1&#39;:
addFraction(1,2,3,4);
打破;