类实现一维数组正负数交换

来源:互联网 发布:react set state 源码 编辑:程序博客网 时间:2024/06/05 10:36
/*对于一个有正数和负数的数组,将其中所有小于0 的元素放于等于0的元素,从右向左找到小于0的元素,将两者交换。依此类推,直到扫描完为止。试建立一个类ARR,完成上述工作。具体要求如下: (1) 私有数据成员。 int n:数组实际元素个数。 int a[100]:初始时存放原始数组,最终存放交换后的数组。 (2) 公有成员函数。 ARR(int x[ ], int size):构造函数,用参数size初始化n,用x数组初始化a数组。 void change( ):使用以上算法,完成调换数组元素的工作。 void show( ):输出a数组的值。 (3) 在 主 函 数 中 完 成 对 该 类 的 测 试 。 定 义 一 个 整 型 数 组 int b[10] , 其 初 值 是 {1,-3,-1,3,2,4,-4,5,-5,-2},定义一个ARR类的对象v,用b数组及其元素个数初始化该对象,先输出原始数组的值,然后交换数组元素的值,最后输出交换后的结果。 程序运行结果应为: 1 -3 -1 3 2 4 -4 5 -5 -2 -2 -3 -1 -5 -4 4 2 5 3 1 */#include<iostream>usingnamespacestd;class arr{private:int n; int a[10];public: arr(int x[], int size); void change(); void show();};arr::arr(int x[], int size){ n = size; for (int i = 0; i < n; i++) { a[i] = x[i]; }}void arr::change(){ int i = 0, j = n - 1;while (i != j + 1) { while (a[i] < 0) i++; while (a[j] > 0) j--; int temp; temp = a[i]; a[i] = a[j]; a[j] = temp; }}void arr::show(){ for (int i = 0; i < n; i++) { cout << a[i] << '\t'; } cout << endl;}int main(){ int x[] = { 1,-3,-1,3,2,4,-4,5,-5,-2 }; arr arr1(x, 10); arr1.show(); arr1.change(); arr1.show(); system("pause");return0;}
原创粉丝点击