某班需要从文本文件1.txt或二进制文件1.dat中读入若干同学的《面向对象程序设计》成绩求平均值,并把平均值输出到屏幕上。现在要求设计一个File类完成此项工作。
时间: 2023-08-09 14:09:56 浏览: 93
C语言程序设计-有一个一维数组score,内放10个学生的成绩,用一个函数来求平均成绩;
5星 · 资源好评率100%
好的,我理解您的问题。根据您的要求,您需要设计一个File类,用于从文件中读取学生的《面向对象程序设计》成绩并计算平均值,然后将结果输出到屏幕上。以下是一个基本的File类的示例代码:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
class File {
public:
File(string filename) : filename(filename) {}
double readScores() {
ifstream fin(filename, ios::binary); // 打开二进制文件
double sum = 0;
int count = 0;
while (!fin.eof()) {
double score;
fin.read((char*)&score, sizeof(score)); // 读取一个double类型的成绩
sum += score;
count++;
}
fin.close();
return sum / count;
}
private:
string filename;
};
int main() {
File file("1.dat");
double average = file.readScores();
cout << "平均成绩为:" << average << endl;
return 0;
}
```
在这个例子中,File类有一个构造函数,用于初始化文件名。readScores()函数用于从文件中读取成绩并计算平均值,最后将平均值作为返回值返回。在main函数中,我们创建了一个File对象,并调用readScores()函数来计算平均值,然后将结果输出到屏幕上。
需要注意的是,这个例子中使用了二进制文件来存储成绩,因此我们在打开文件时需要使用ios::binary模式。如果您需要从文本文件中读取成绩,可以使用ifstream的默认模式。另外,我们在读取成绩时使用了一个循环,并使用了eof()函数来判断文件是否已经读取完毕。
阅读全文