0

私は C++ の初心者で、各タスクを実行する関数を作成しようとして多くの問題を抱えています。メイン関数で各タスクを実行できると思いますが、それらを別々の関数に分割する方法がわかりません (例: .txt ファイルの読み取りとそれを別々の関数に表示する方法がわかりません)。

また、「スコア」については、「添え字には配列またはポインター型が必要です」というエラーメッセージが表示され続けますが、それが何を意味するのかわかりません。

注: プログラムを完全に終了していないため、curve、displaycurve、および averagecurve にはまだ関数が作成されていません。これは後で行います。

//this program reads data from a .txt file, displays the scores, finds the average score, finds the highest score, and displays the curve

#include <iostream>
#include <fstream>

using namespace std;

//function prototypes

void readscores (int); // read exam scores into an array from examscores.txt
void displayscores (int); // display scores in row of four scores
double average (const double scores [], int); //??? calculate average score and display
double maxscore (const double[], int); // find max and display
double curve (const double []); //find the "curve" based on the highest scores
double displaycurve (const double []);// display curves in rows of four
double averagecurve (const double []); //calculate the average curved score and display

int main ()
{
    const int array_size = 30; //array size
    double scores[array_size];//array of 30 elements
    int count = 0;
    ifstream inputfile;


    //open file
    inputfile.open("ExamScores.txt");

    //read scores
    while (count < array_size && inputfile >> scores[count])
        count ++;
    //display scores
    cout << "The numbers are:";
    for (count = 0; count < array_size; count++)
        displayscores(scores[count]);

    //calculate the average
    cout << "The average is:";
    average (scores, array_size);

    //find the max score and display

    cout << "The maximum score is:";
    maxscore (scores, array_size);


    return 0;
}

void displayscores (int num)
{
    cout << num << " ";
    }

double average (const double scores, int array_size)
{double total = 0;
    double average;

    for (int count = 0; count < array_size; count ++)
total += scores[count];
    average = total /array_size;
}

double maxscore (const double scores, int array_size)
{double max;

max = scores [0];

for (int count = 1; count < array_size; count++)
{if (scores[count] > max)
max  = scores[count];
}
return max;
}

これらは、.txt ファイル内の数値またはスコアです。

67 64 83 81 72 75 85 81 56 88 71 80 90 58 78 74 84 64 72 69 78 87 84 72 83 68 62 88 70 75 

コーディングが完全に間違っている場合は申し訳ありませんが、教授は自分が教えていることを説明したくなく、学期はすでに半分終わっているため、基本的な概念に頭を悩ませようとしています.

4

2 に答える 2

2

前方宣言でパラメーターを正しく指定しました。

double average ( double scores[], int array_size);

しかし、実装では「[]」を省略したため、関数は配列を取得していることを知りません。

変化する:

double average ( double scores, int array_size)

に:

double average ( double scores[], int array_size)

同様に、配列パラメーターを取ることになっている他の関数についても同様です。

于 2012-10-26T20:39:12.743 に答える
0
const double scores

double変数です。それでも、あなたはやろうとしています:

max = scores[0];

[0]「添字」と呼ばれscores、配列またはポインターでない場合、スカラー型 ( など) には意味がありません。

関数maxscrore()はおそらく、代わりに次の署名を使用する必要があります。

double maxscore (const double scores[], int array_size)

同じ間違いをした他のすべての機能についても同じことが言えます。

于 2012-10-26T20:35:18.253 に答える