题目: 设计一个程序,要求用户输入一个文件名,然后读取该文件中的整数,计算这些整数的平均值,并输出结果。如果文件不存在或无法打开,则抛出一个自定义的异常对象,并在异常处理程序中输出错误信息。 要求: 使用自定义的异常类来表示文件打开异常,命名为"FileOpenException"。 使用异常处理机制来捕获并处理可能出现的文件打开异常。 在异常处理程序中输出错误信息:"无法打开文件!"。 提示: 可以定义一个函数来读取文件中的整数,并在该函数中抛出异常。 在主函数中调用该函数,并使用try-catch语句来捕获和处理异常。使用c++并写出mian函数
时间: 2024-02-23 08:02:02 浏览: 85
好的,我来为你提供一个使用 C++ 实现的程序。
以下是一个实现你所述需求的 C++ 程序,其中包括了自定义异常类的实现、文件读取函数的实现以及主函数的实现:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
class FileOpenException : public std::exception {
public:
virtual const char* what() const throw() {
return "无法打开文件!";
}
};
std::vector<int> read_integers_from_file(std::string filename) {
std::vector<int> integers;
std::ifstream file(filename);
if (!file.is_open()) {
throw FileOpenException();
}
int num;
while (file >> num) {
integers.push_back(num);
}
file.close();
return integers;
}
int main() {
std::string filename;
std::cout << "请输入文件名:";
std::cin >> filename;
try {
std::vector<int> integers = read_integers_from_file(filename);
int sum = 0;
for (int i : integers) {
sum += i;
}
double avg = (double)sum / integers.size();
std::cout << "平均值为:" << avg << std::endl;
}
catch (FileOpenException& e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
```
程序流程说明:
1. 定义了一个自定义异常类 `FileOpenException`,表示文件打开异常。
2. 定义了一个函数 `read_integers_from_file`,用于读取文件中的整数,并在该函数中抛出异常。如果文件不存在或无法打开,则抛出 `FileOpenException` 异常对象。
3. 在主函数 `main` 中,先要求用户输入文件名,然后调用 `read_integers_from_file` 函数读取整数。
4. 如果文件打开异常,则在异常处理程序中输出错误信息:"无法打开文件!"。
5. 如果文件读取成功,则计算整数的平均值并输出结果。
希望这个程序可以帮到你!
阅读全文