data01.dat存放的是一系列整型数据,求data01.dat中的最大十个数的和的立方根(先求十个数的和再求立方根),求得的结果显示在屏幕上,并且将最大的十个数与所求得的结果输出到result.dat中。提示:先对data01.dat中的数据进行排序,然后再进行计算。要求: 1)使用函数double intSumMax(int *p,int num) { } 来实现,并把该函数放在头文件ISmax.h中以便在主函数中调用该函数. 2)主函数中使用的数组使用动态数组来创建. 3)result.dat在程序的执行过程中创建。 data01.dat在附件的压缩文件中
时间: 2023-12-10 15:39:15 浏览: 181
用java 编写的 ,编写一个计算机程序用来计算一个文件的16位效验和。最快速的方法是用一个32位的整数来存放这个和。
5星 · 资源好评率100%
首先需要将data01.dat中的数据读取到动态数组中,并进行排序。可以使用C++标准库中的vector和algorithm库来实现。
代码如下:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
double intSumMax(int *p, int num); // 声明函数
int main()
{
// 读取数据到动态数组中
ifstream fin("data01.dat", ios::binary);
if (!fin)
{
cerr << "Failed to open data file!" << endl;
return 1;
}
fin.seekg(0, ios::end);
int fileSize = fin.tellg();
int num = fileSize / sizeof(int);
fin.seekg(0, ios::beg);
vector<int> data(num);
fin.read((char *)&data[0], fileSize);
fin.close();
// 对数组进行排序
sort(data.begin(), data.end(), greater<int>());
// 计算最大十个数的和的立方根
double result = intSumMax(&data[0], 10);
result = pow(result, 1.0 / 3);
// 输出结果到屏幕并写入result.dat中
ofstream fout("result.dat", ios::binary);
if (!fout)
{
cerr << "Failed to create result file!" << endl;
return 1;
}
fout.write((char *)&result, sizeof(double));
for (int i = 0; i < 10; i++)
{
fout.write((char *)&data[i], sizeof(int));
cout << data[i] << " ";
}
cout << endl << "Result: " << result << endl;
fout.close();
return 0;
}
double intSumMax(int *p, int num)
{
double sum = 0;
for (int i = 0; i < num; i++)
{
sum += p[i];
}
return sum;
}
```
上述代码中,使用ifstream读取data01.dat中的数据到vector<int>类型的数组data中,并使用sort函数对数组进行排序。然后调用intSumMax函数计算最大十个数的和,并计算立方根。最后将结果输出到屏幕并写入result.dat中。
阅读全文