簡體   English   中英

未在范圍內聲明

[英]Not declared in Scope

我寫了一個簡單的平均計算程序,試圖計算一個學期的平均值。 當我編譯代碼時,我收到一個錯誤,告訴我我的'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;
}

您需要知道這些函數是否存在,因此為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;添加using std::string; 為您的代碼提供相同的易用性。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM