二. 有一组若干个整数存放于文件中,并已按由小到大的顺序排列好.请编写一个类ARR, 完成以下功能: 1. 构造函数完成数组a的初始化工作; 2. void DelSame()函数完成将数据中相同的数删除后只剩下一个。 例如: 原数据为: 1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10 经删除后, 变为: 1,2,3,4,5,6,7,8,9,10 3. void Show(char * fname)函数完成将结果数据输出到屏幕同时输出到文件 私有数据成员: 1. int n; 数据实际个数 2. int a[100]; 存放原始数据及结果的数组 使用如下主函数进行测试: void main() { int b[ ]={1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10} ARR a(b); a.DelSame(); a.Show("nums.txt"); }
时间: 2023-07-02 14:09:50 浏览: 51
以下是ARR类的实现:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
class ARR {
private:
int n; // 数据实际个数
int a[100]; // 存放原始数据及结果的数组
public:
ARR(int b[]) { // 构造函数完成数组a的初始化工作
n = sizeof(b) / sizeof(int); // 计算数组b中的元素个数
for (int i = 0; i < n; i++) {
a[i] = b[i];
}
}
void DelSame() { // 将数据中相同的数删除后只剩下一个
int j = 0; // j指向下一个不同的数应该存放的位置
for (int i = 1; i < n; i++) {
if (a[i] != a[j]) { // 如果a[i]和a[j]不相同
j++; // j指向下一个不同的数应该存放的位置
a[j] = a[i]; // 将a[i]存放到a[j]中
}
}
n = j + 1; // 更新数据实际个数
}
void Show(char* fname) { // 将结果数据输出到屏幕同时输出到文件
ofstream fout(fname);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
fout << a[i] << " ";
}
cout << endl;
fout << endl;
fout.close();
}
};
```
以下是主函数:
```cpp
void main() {
int b[] = { 1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10 };
ARR a(b);
a.DelSame();
a.Show("nums.txt");
}
```
在程序运行后,会生成一个名为`nums.txt`的文件,内容为:
```
1 2 3 4 5 6 7 8 9 10
```
阅读全文