未在范围内声明

时间:2013-08-21 00:48:32

标签: c++

我写了一个简单的平均计算程序,试图计算一个学期的平均值。当我编译代码时,我收到一个错误,告诉我我的'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;
}

2 个答案:

答案 0 :(得分: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;添加到您的代码中以获得相同的易用性。

答案 1 :(得分:2)

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

示例:

// 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;
}