-6

最高の売上高と平均を見つけるためにC ++でこのプログラムを使用していますが、以下のエラーが発生するのを助けてください

#include <iostream>

using namespace std;

// You must add the three functions here

void getSales(float & sales1P, float & sales2P, float & sales3P,
        float & sales4P) {

    cout << "Enter four sales values: " << endl;

    cin >> sales1P >> sales2P >> sales3P >> sales4P;
}

float calcAverage(float sales1P, float sales2P, float sales3P, float sales4P) {

    return (sales1P + sales2P + sales3P + sales4P) / 4;
}

float findHighest(float sales1P, float sales2P, float sales3P, float sales4P)

{

    float highest = sales1P;
    if (sales2P > highest)
        highest = sales2P;
    if (sales3P > highest)
        highest = sales3P;
    if (sales4P > highest)
        highest = sales4P;
}

void displayOutput(float highestSales, float averageSales) {
    cout << "The highest sales figure is " << highestSales

    << " with an average of " << averageSales << endl;
}

int main()

{
    float sales1,
    sales2,
    sales3,
    sales4;
    float averageSales;
    float highestSales;
    for (int i = 0; i < 4; i++)
    // Get the sales for each division.
    sales1 = getSales();
    sales2 = getSales();
    sales3 = getSales();
    sales4 = getSales();
    //
    //getSales(sales1, sales2, sales3, sales4);
    averageSales = calcAverage(sales1, sales2, sales3, sales4);
    //getSales(sales1, sales2, sales3, sales4);
    highestSales = findHighest(sales1, sales2, sales3, sales4);
    displayOutput(highestSales, averageSales);
    system("PAUSE");
    return 0;
}

エラー:

error::::    In function `int main()': 
\Examples_C++\question_4a.cpp 5 C:\Examples_C++\C [Error] too few arguments to function void getSales(float&, float&, float&, float&)' 
\Examples_C++\question_4a.cpp 41 C:\Examples_C++\C [Error] at this point in file 
\Examples_C++\question_4a.cpp 41 C:\Examples_C++\C [Error] void value not ignored as it ought to be
\Examples_C++\question_4a.cpp 5 C:\Examples_C++\C [Error] too few arguments to function `void getSales(float&, float&, float&, float&)' 
\Examples_C++\question_4a.cpp 42 C:\Examples_C++\C [Error] at this point in file 
\Examples_C++\question_4a.cpp 42 C:\Examples_C++\C [Error] void value not ignored as it ought to be 
\Examples_C++\question_4a.cpp 5 C:\Examples_C++\C [Error] too few arguments to function `void getSales(float&, float&, float&, float&)' 
\Examples_C++\question_4a.cpp 43 C:\Examples_C++\C [Error] at this point in file 
\Examples_C++\question_4a.cpp 43 C:\Examples_C++\C [Error] void value not ignored as it ought to be 
\Examples_C++\question_4a.cpp 5 C:\Examples_C++\C [Error] too few arguments to function `void getSales(float&, float&, float&, float&)' 
\Examples_C++\question_4a.cpp 44 C:\Examples_C++\C [Error] at this point in file 
\Examples_C++\question_4a.cpp 44 C:\Examples_C++\C [Error] void value not ignored as it ought to be 
4

3 に答える 3

2

このセクションで:

sales1 = getSales();

sales2 = getSales();

sales3 = getSales();

sales4 = getSales();

次のシグネチャを持つ必要がある(getSales)という関数を使用しています:getSales(float&、float&、float&、float&)。これは、関数が4つの引数を取り、0を指定していることを意味します。

于 2012-09-23T16:28:19.687 に答える
1

これはあなたの関数定義です:

void getSales(float & sales1P, float & sales2P, float & sales3P, float & sales4P)

これはあなたがそれを呼び出す方法です:

sales1 = getSales();

sales2 = getSales();

sales3 = getSales();

sales4 = getSales();

定義とそれがどのように呼び出されているかの間の断絶が見られますか?

4 つの Float アドレスで getSales() を呼び出す必要があります

編集:OPはそれを理解するのに問題があるようです...

#include<iostream>
using namespace std;

// You must add the three functions here
//changed these to take pointers to floats
void getSales(float *sales1P, float *sales2P, float *sales3P, float *sales4P) {

cout << "Enter four sales values: " <
//Changed the cin to store in the content of pointers
cin >> *sales1P >> *sales2P >> *sales3P >> *sales4P; }

float calcAverage(float sales1P, float sales2P, float sales3P, float sales4P) {

return (sales1P + sales2P + sales3P + sales4P) / 4; }

float findHighest( float sales1P, float sales2P, float sales3P, float sales4P)

{

float highest = sales1P;
if (sales2P > highest)
    highest = sales2P;
if (sales3P > highest)
    highest = sales3P;
if (sales4P > highest)
    highest = sales4P;
//You were for some reason missing the return statement on highest here. 
return highest;
}

void displayOutput(float highestSales, float averageSales) { cout << "The highest sales         figure is " << highestSales  << " with an average of " << averageSales <<endl;
}

int main()

{

float sales1,sales2,sales3,sales4;

float averageSales;

float highestSales;

//for (int i = 0; i < 4; i++)

// Get the sales for each division.
//The For loop here is useless. Call the function with the addresses of the float values. 
getSales(&sales1, &sales2, &sales3, &sales4);


averageSales = calcAverage(sales1, sales2, sales3, sales4);



highestSales = findHighest(sales1, sales2, sales3, sales4);

displayOutput(highestSales, averageSales);

system("PAUSE");

return 0;

}

ポインタについて調べておくと役に立ちます。

  1. ここの for ループは役に立たない
  2. フロートへのポインターを受け入れるように定義を変更しました
  3. float アドレスをパラメーターとして渡しました
  4. getHighest() 関数に return ステートメントがありませんでした。
  5. また、getSales の結果に何かを代入していましたが、getSales はvoid を返します。

戻って関数と代入の基本を学ぶことをお勧めします。

良い一日を過ごしてください!

于 2012-09-23T16:39:07.823 に答える
0
// getSales(sales1, sales2, sales3, sales4);

そのとおりです。なぜそれをコメントアウトして、定義した関数のパラメーター数に直接反するのですか?

また、あなたのforループはおそらくあなたが思っていることをしていないでしょう。あなたは忘れました{}。あなたが今持っているものは最初の行だけを4回実行します。

于 2012-09-23T16:32:44.673 に答える