我是C ++的初学者,在尝试执行每项任务的函数时遇到了很多麻烦。我想我可以处理主函数中的每个任务,但我不知道如何将它们分成单独的函数(例如:我不知道如何打破.txt文件的读取并将其显示到单独的函数中。)
此外,对于“得分”,我不断收到一条错误消息,说明“下标需要数组或指针类型”,但我不知道这意味着什么。
注意:我还没有完成程序,所以曲线,显示曲线和平均曲线还没有制作功能,我将在稍后做。
//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
如果我的编码完全错误,我道歉,我仍然试图围绕基本概念,因为教授不喜欢解释他在教什么,而且学期已经完成了一半。
答案 0 :(得分:2)
您已正确指定了前向声明中的参数:
double average ( double scores[], int array_size);
但是在实现中你没有使用“[]”,所以函数不知道它正在获取数组。
变化:
double average ( double scores, int array_size)
要:
double average ( double scores[], int array_size)
同样在其他应该采用数组参数的函数上。
答案 1 :(得分:0)
const double scores
是double
变量。但你正试图这样做:
max = scores[0];
[0]
被称为“下标”,如果它不是数组或指针,它对标量类型(如scores
)没有任何意义。
您的maxscrore()
函数应该使用以下签名:
double maxscore (const double scores[], int array_size)
同样适用于你犯同样错误的所有其他功能。