0

円の面積を計算するためにこのプログラムを書きましたが、このエラー メッセージが表示され続けます。

これが何を意味するのか理解できません!私はこのサイトを含むあらゆる場所を見てきましたが、ほとんどの答えは私の頭の上にあります.

プログラム:

#include <iostream>
using namespace std;

// Aquire radius value
// Postcondition: print out header and return radius value
double printHeader();

// Precondition: radius has been entered
// Postcondition: calculate and print out area of the circle
void calculateArea(double& radius);

int main()
{
    double area=0.0, radius=0.0;
    printHeader();
    calculateArea(radius);
    return 0;
}

double printHeader(double& radius)
{
    cout << "Program for calculating the area of a circle" << endl;
    cout << "Enter the radius of the circle: ";
    cin >> radius;
    return radius;
}

void calculateArea(double& radius, double area)
{
    double PI=3.14159;
    area = (PI*radius*radius);
    cout << "The area of the circle is: " << area << endl;
}

CodeBlocks を使用しています。本当にありがとう!

4

1 に答える 1

0

このエラーは、定義されていない関数を宣言したことをコンパイラが通知するものです。関数プロトタイプを見ると、次のようになります。

// Aquire radius value
// Postcondition: print out header and return radius value
double printHeader();

// Precondition: radius has been entered
// Postcondition: calculate and print out area of the circle
void calculateArea(double& radius);

次に、後で定義する関数を見てください。

double printHeader(double& radius) { ... }

void calculateArea(double& radius, double area) { ... }

プロトタイプがある関数を定義していないことがわかります-パラメーターの数が異なります! コンパイラは、スコープとパラメーターに基づいて関数を識別します。前方宣言を更新して、定義にパラメーターを含める必要があります。

double printHeader(double& radius);
void calculateArea(double& radius, double area);

これを説明する別の方法は、関数 double printHeader() が関数 double printHeader(double& radius) と同じではないということです。最初の関数はパラメーターをとらず、2 番目の関数は二重参照を必要とします。

于 2013-03-01T20:01:03.417 に答える