课后习题 2-8 按照正负分解数组

题目:

试着编写一个函数,将一个有n个非零元素的整数一维数组A[n]拆分为两个一维数组,使得A[]中大于零的元素存放在B[]中,小于零的元素存放在C[]中。

Array.h

#pragma once
#include<iostream>
using namespace std;

class Array {
    int* data;
    int num; //num<=>lenth
    int maxSize;
public:
    Array(int size) {
        maxSize = size;
        data = new int[maxSize];
        num = 0;
    }
    void creat(int* arr,int  n) {
        for (int i = 0; i < n; i++) {
            data[i] = arr[i];
            num++;
        }
    }
    void show() {
        for (int i = 0; i < num; i++) {
            cout << data[i] << " ";
        }
        cout << endl;
    }
    void divide(Array& B, Array& C) {
        B.num = 0;
        C.num = 0;
        for (int i = 0; i < num; i++) {
            if (data[i] > 0) {
                B.data[B.num++] = data[i];
            }
            else if (data[i] < 0) {
                C.data[C.num++] = data[i];
            }
        }
    }
};

main.cpp

#include"Array.h"

int main() {
    Array A(9);
    Array B(9);
    Array C(9);
    int arr[] = { -1,-8,6,4,-7,-3 };
    A.creat(arr, 6);
    A.show();
    A.divide(B, C);
    B.show();
    C.show();
    return  0;
}

猜你喜欢

转载自www.cnblogs.com/SlowIsFast/p/12501963.html
2-8