二维数组元素变换为逆向存放

题目.编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。
例如,原始二维数组为,逆向存放后变为。试建立一个类REVARR,完成上述工作。具体要求如下:
(1)私有数据成员
int a[M][N]:初始化时存放原始二维数组,最终存放逆向存放后的二维数组。
(2)公有成员函数
REVARR(int x[M][N]):构造函数,用形参x初始化数据成员a。
void reverse():按题目要求处理二维数组。
void print():按二维数组方式输出a数组值。
(3)在主函数中完成对该类的测试。在程序的开头,定义符号常数M和N的值分别为3
和4,表示数组的行数和列数。在主函数中定义数组int data[M][N],其初值如上。定义一个REVARR类的对象arr,并用数组data初始化该对象的成员a,输出原数组值,然后调用成员函数逆序存放二维数组,最后输出逆序后的二维数组。

#include <iostream>

using namespace std;

class ARRAY{
public:
    void init(float a[10]); //初始化数组data。
    void process();     //将数组data中的最大值、最小值和平均值分别存入max、min、average中。
    void print();
private:
    float m_data[10];       //存储待处理的数组元素。
    float m_max;            //存储数组中元素的最大值。
    float m_min;            //存储数组中元素的最小值。
    float m_average;        //存储数组中元素的平均值。
};

void ARRAY::init(float a[10])
{
    int i;

    for (i = 0; i < 10; i++)
    {
        m_data[i] = a[i];
    }
}
void ARRAY::process()
{
    int i;
    float s = 0;

    //求最大值
    for (i = 0; i < 10; i++)
    {
        if (m_data[i] >m_max)
        {
            m_max = m_data[i];
        }
    }

    //求最小值
    for (i = 1, m_min = m_data[0]; i < 10; i++)
    {
        if (m_data[i] < m_min)
        {
            m_min = m_data[i];
        }
    }

    //求平均值
    for (i = 0; i < 10; i++)
    {
        s += m_data[i];
    }
    m_average = s / 10;

}
void ARRAY::print()
{   
    for (int i = 0; i < 10; i++)
    {
        cout << m_data[i] << "\t";
        if (4 == i || 9 == i)
        {
            cout << endl;
        }
    }


    cout << "max = " << m_max << endl;
    cout << "min = " << m_min << endl;
    cout <<"average = "<< m_average << endl;
}

int main()
{
    float b[10] = { 3.0, 4, 5, 2, 1, 10, 5.5, 7.5, 8, 9 };

    ARRAY arr;

    arr.init(b);
    arr.process();
    arr.print();
    system("pause");

    return 0;
}

运行结果
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhoujy1996/article/details/80370015
今日推荐