2. 某班需要从磁盘文件1.txt中读入若干同学的《面向对象程序设计》成绩求平均值,并把平均值输出到屏幕上。现在要求设计一个File类完成此项工作。 class File { private: string filename; public: File(string s){filename=s;} double readfile( ); //从文件读入成绩求平均值并返回该值 }; (1)完成readfile函数; (2)使用main函数完成File类的测试。c++
时间: 2024-03-06 14:51:21 浏览: 53
好的,以下是使用C++实现File类的readfile函数和测试代码:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
class File {
private:
string filename;
public:
File(string s) {
filename = s;
}
double readfile() {
ifstream infile(filename, ios::in);
if (!infile.is_open()) {
cout << "文件打开失败!" << endl;
return -1;
}
double sum = 0, count = 0, score = 0;
while (infile >> score) {
sum += score;
count++;
}
infile.close();
if (count == 0) {
cout << "文件中无数据!" << endl;
return -1;
}
return sum / count;
}
};
int main() {
File file("1.txt");
double average = file.readfile();
if (average != -1) {
cout << "平均成绩为:" << average << endl;
}
return 0;
}
```
在上述代码中,我们使用了ifstream类来打开并读取指定的文件。File类的readfile函数用于从文件中读取成绩,计算平均值并返回该值。在函数中,我们使用while循环来遍历文件中的每个成绩,并累加计算总分数和人数。最后计算平均值并返回。
在主函数中,我们首先创建了一个File类的对象,并将文件名传递给构造函数。然后调用readfile函数来读取文件中的成绩并计算平均值。如果文件打开失败或者文件中无数据,则会输出错误信息。最后输出平均成绩。
请注意,在使用ifstream类时,我们需要在打开文件时指定打开模式。在上述代码中,我们使用了ios::in模式,表示以只读方式打开文件。
希望这个代码对你有所帮助!
阅读全文