3

我写了一个简单的平均计算程序,试图计算一个学期的平均数。当我编译代码时,我收到一个错误,告诉我我的“inputExam”函数没有在这个范围内声明。我已经研究了错误消息,但我不知道该怎么做才能修复它。

对于其他功能,我也遇到了这个错误,但是一旦我理解了我的错误,我想我可以修复其他功能。

 #include <iostream>

using namespace std;

int main()
{
    double finalExam=0.0;
    double midterm = 0.0;
    double quizzes = 0.0;
    double labs = 0.0;
    double semGrade=0.0;

    midterm=inputExam("Midterm");
    finalExam=inputExam("Final");
    quizzes=inputAndAvgQuizzes();
    labs=inputAndAvgLabs();

    semGrade=(midterm*.2)+(finalExam*.2)+(labs*.5)+(quizzes*.1);

    cout<<"Your End of Semester Grade is: " semGrade;

    return 0;
}

double inputExam(string examType)
{
    double grade;
    cout<< "Enter the " examType " Score: ";
    cin>>grade;
    return (grade);
}

double inputAndAvgLabs()
{
    double num [4];
    double sum;
    double avg;

    if (int a=0, a<3,a++)
    {
        cout<<"What is the grade?"<<endl;
        cin>>num[a]>>endl;
    }
    if (int a=0, a<3, a++)
    {
        sum=sum+num[a];
    }
    avg=sum/4;

    return avg;
}

double inputAndAvgQuizzes()
{
    double num[3];
    double sum;
    double avg;
    double lowest = num[0];

    if (int a=0, a<2,a++)
    {
        cout<<"What is the grade?"<<endl;
        cin>>num[a]>>endl;
    }

    if (lowest>num[1])
    {
        lowest=num[1];
    }
    if (lowest>num[2])
    {
        lowest=num[2];
    }
    sum=num[1]+num[2]+num[3]-lowest;
    avg=sum/2;

    return avg;
}
4

2 回答 2

4

您需要让人们知道这些函数存在,因此在上面为您的函数添加原型main或在那里定义您的函数。像这样:

...
double inputExam(string examType);
double inputAndAvgLabs();
double inputAndAvgQuizzes();

int main() { ... }

//definitions after main

..或复制粘贴调用上方的所有这些定义,main如下所示:

...
// Function defs here
// Prototypes no longer needed
...
int main() {...}
// Defs no longer needed here

或者,您可以将所有定义放在一个外部文件中,然后通过文件或更好的方式将其编译到项目中make,并且随着您的进展,在头文件和实现文件中创建类,并将它们以相同的方式(有点)包含在您的文件中你做#include <iostream>

另一个小建议是避免using namespace std;. 如果不仅在理论上这是不好的做法,而且可能导致大型项目中的命名空间冲突。如果您像我一样讨厌打字,std::string ...那么添加using std::string;到您的代码中以获得同样的易用性。

于 2013-08-21T00:50:30.637 回答
3

在 C/C++ 中,您需要在使用之前声明该函数。在这种情况下,它只是意味着在主函数之前声明函数原型,然后在主函数之后实现它们。

例子:

// declare a prototype
double Function(int variable);

int main()
{
    Function(5);
    return 0;
}

// Implement the function
double Function(int variable)
{
    /* Do Something */
}

或者,您可以将代码更改为以下形式:

// Implement the function first
double Function(int variable)
{
    /* Do Something */
}

int main()
{
    Function("Testing");
    return 0;
}
于 2013-08-21T00:51:45.933 回答