c++,某班需要从文本文件1.txt或二进制文件1.dat中读入若干同学的《面向对象程序设计》成绩求平均值,并把平均值输出到屏幕上。现在要求设计一个File类完成此项工作,用readfile函数
时间: 2024-02-12 15:05:52 浏览: 73
好的,你的问题是如何使用 File 类的 readfile 函数来读取文件中的成绩并计算平均值输出到屏幕上。
首先,我们需要在 File 类中定义一个 readfile 函数,该函数接受一个文件名作为参数,并返回读取到的成绩数据。该函数应该可以读取文本文件和二进制文件。
接下来,在 File 类中定义一个成员函数用于计算成绩平均值。该成员函数应该接受成绩数据作为参数,并返回平均值。
最后,在 File 类中定义一个成员函数用于输出平均值到屏幕上。该成员函数应该接受平均值作为参数,并将其输出到屏幕上。
以下是一个基本的 File 类的示例代码:
```c++
#include <iostream>
#include <fstream>
#include <vector>
class File {
public:
std::vector<int> readfile(std::string filename) {
std::vector<int> scores;
std::ifstream infile;
infile.open(filename, std::ios::binary);
if (infile.fail()) {
infile.open(filename);
if (infile.fail()) {
std::cerr << "Unable to open file!" << std::endl;
exit(1);
}
}
int score;
while (infile.read(reinterpret_cast<char*>(&score), sizeof(score))) {
scores.push_back(score);
}
infile.close();
return scores;
}
double calculateAverage(std::vector<int> scores) {
double sum = 0;
for (int i = 0; i < scores.size(); i++) {
sum += scores[i];
}
return sum / scores.size();
}
void printAverage(double average) {
std::cout << "Average score: " << average << std::endl;
}
};
int main() {
File file;
std::vector<int> scores = file.readfile("1.txt");
double average = file.calculateAverage(scores);
file.printAverage(average);
return 0;
}
```
该示例代码中,我们使用了 vector 容器来存储读取到的成绩数据。readfile 函数使用 ifstream 类来读取文件中的成绩数据,并将其存储到 scores 容器中。calculateAverage 函数接受 scores 容器作为参数,并计算平均值。printAverage 函数接受平均值作为参数,并将其输出到屏幕上。
在 main 函数中,我们实例化了一个 File 对象,并调用其成员函数来完成读取文件、计算平均值和输出平均值的工作。由于 readfile 函数可以读取文本文件和二进制文件,所以我们可以将文件名 "1.txt" 或 "1.dat" 传递给 readfile 函数。
阅读全文