错误:函数

时间:2015-04-23 04:25:36

标签: c++

我是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();
}

5 个答案:

答案 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调用函数时,您没有传递任何参数。

您必须先从用户那里获取分数,然后调用函数来操作分数。

  1. 询问用户分数。
  2. 在调用时将分数值用于函数。
  3. 案例&#39; 1&#39;:
        addFraction(1,2,3,4);
        打破;