二. 有一组若干个整数存放于文件中,并已按由小到大的顺序排列好.请编写一个类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 18:09:41 浏览: 81
以下是ARR类的实现代码:
```c++
#include <iostream>
#include <fstream>
using namespace std;
class ARR {
private:
int n; // 数据实际个数
int a[100]; // 存放原始数据及结果的数组
public:
ARR(int b[]) { // 构造函数完成数组a的初始化工作
n = sizeof(b) / sizeof(b[0]);
for (int i = 0; i < n; i++) {
a[i] = b[i];
}
}
void DelSame() { // 将数据中相同的数删除后只剩下一个
int k = 0; // 记录去重后的数组长度
for (int i = 0; i < n; i++) {
if (i == 0 || a[i] != a[i-1]) { // 当前元素与前一个元素不同,保留当前元素
a[k++] = a[i];
}
}
n = k; // 更新数组长度
}
void Show(char* fname) { // 将结果数据输出到屏幕同时输出到文件
ofstream ofs(fname); // 打开输出文件流
for (int i = 0; i < n; i++) {
cout << a[i] << " "; // 输出到屏幕
ofs << a[i] << " "; // 输出到文件
}
cout << endl; // 换行
ofs.close(); // 关闭输出文件流
}
};
```
在主函数中创建一个ARR对象,然后调用DelSame和Show方法即可:
```c++
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");
}
```
阅读全文