第五章5.15作业题

简介:
/*
*编一个程序,用成员函数重载运算符"+"和"-",将
*两个二维数组相加和相减,要求第一个二维数组的
*值由构造函数设置,另一个二维数组的值由键盘输入。
*/

#ifndef ARRAY2D_H
#define ARRAY2D_H

class Array2D
{
    public:
        Array2D();
        Array2D(int arr[][20], int r, int c);
        virtual ~Array2D(){};

        Array2D operator+(const Array2D & src);
        Array2D operator-(const Array2D & src);
        friend ostream & operator<<(ostream &, const Array2D & src);
    private:
        int array[20][20];
        int row; //行
        int col; //列
};

#endif //ARRAY2D_H


#include <iostream>
using namespace std;

#include "Array2D.h"

Array2D::Array2D()
{
    row = 20;
    col = 20;
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            array[i][j] = 0;
        }
    }

}

Array2D::Array2D(int arr[][20], int r, int c)
{
    for (int i = 0; i < r; i++)
    {
        for (int j = 0; j < c; j++)
        {
            array[i][j] = arr[i][j];
        }
    }
    row = r;
    col = c;
}

Array2D Array2D::operator+(const Array2D & src)
{
    Array2D tmp;

    for (int i = 0; i < src.row; i++)
    {
        for (int j = 0; j < src.col; j++)
        {
           tmp.array[i][j] = array[i][j] + src.array[i][j];
        }
    }
    tmp.row = row;
    tmp.col = col;

    return tmp;
}


Array2D Array2D::operator-(const Array2D & src)
{
    Array2D tmp;

    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
        {
            tmp.array[i][j] = array[i][j] - src.array[i][j];
        }
    }
    tmp.row = row;
    tmp.col = col;

    return tmp;
}

ostream & operator<<(ostream & out, const Array2D & src)
{
    for (int i = 0; i < src.row; i++)
    {
        for (int j = 0; j < src.col; j++)
        {
            cout << src.array[i][j] << " ";
        }
        cout << endl;
    }
    return out;
}


#include <iostream>
using namespace std;

#include <conio.h>
#include "Array2D.h"

int main()
{
    int arr[2][20] = {{1, 1}, {2, 2}};
    Array2D arr1(arr, 2, 2);

    int tmp[2][20] = {{0}};
    cout << "输入2*2矩阵:" << endl;
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            cin >> tmp[i][j];
        }
    }

    Array2D arr2(tmp, 2, 2);

    cout << "arr1: \n" << arr1 << endl;
    cout << "arr2: \n" << arr2 << endl;
    cout << "arr1+arr2: \n" << arr1 + arr2 << endl;
    cout << "arr1-arr2: \n" << arr1 - arr2 << endl;

    getch();
    return 0;
}
/*
运行结果:

输入2*2矩阵:
2 3
3 4
arr1:
1 1
2 2

arr2:
2 3
3 4

arr1+arr2:
3 4
5 6

arr1-arr2:
-1 -2
-1 -2
*/

目录
相关文章
解决删除文件时出现“该项目不在XX中,请确认该项目的位置然后重试”的提示
近期在删除文件夹的时候,出现了这个“该项目不在XX中,请确认该项目的位置然后重试”的提示,实际上这个文件(夹)就在那里,死活都删不掉,win10系统重启之后删除都不行的
10577 0
|
弹性计算 黑灰产治理
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
阿里云服务器怎么续费?新老用户分别有什么优惠?目前新用户续费阿里云服务器指定ECS实例可享4.5折优惠折扣,老用户开通包年自动续费享1次6.5折,开通包月自动续费享3次7.5折,现在续费还可以领取和使用阿里云续费优惠券,本文为大家介绍一下阿里云服务器续费流程及续费过程中如何使用续费优惠券。
6194 0
阿里云服务器续费流程及续费优惠券使用介绍(2023更新)
|
安全 数据管理 定位技术
CDGA|自然资源数据治理五部曲,实现数据融合关联、共享可用
在自然资源行业,数据治理是自然资源信息化的工作基础,是推进自然资源治理体系和治理能力现代化进程的必经之路。
|
SQL JavaScript 小程序
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
|
存储 NoSQL Java
OTS(Table Store)
OTS(Table Store)是阿里云提供的分布式NoSQL数据库服务,支持海量结构化数据的存储、查询和分析。OTS具有高可用、高性能、高扩展性和低成本等特点,适用于各种场景下的数据存储和处理,例如电商、物流、游戏等。
6317 2
|
JavaScript 前端开发 IDE
Vue—怎样编写代码,Vue3的基本语法
本章我们将学习Vue的基本语法,着重学习如何编写代码 Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层组件实例的数据。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析。Vue 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。
Vue—怎样编写代码,Vue3的基本语法
|
C++ Linux
const char*, char const*, char*const的区别
const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 这个知识易混点之前是看过了,今天做Linux上写GTK程序时又出现个Warning,发散一下又想到这个问题,于是翻起来重嚼一下。 事实上这个概念谁都有只是三种声明方式非常相似: Bjarne在他的The C++ Programming Language里面给出过一个助
1310 0
|
安全
阿里云推出商标交易平台「商标优选」 商标即买即用
“商标优选服务”是为阿里云用户提供的,在线挑选闲置商标,发起商标资源受让需求,完成商标专用权转移的全流程服务。
10156 0
阿里云推出商标交易平台「商标优选」 商标即买即用