C++面向对象编程解决三阶矩阵相加减

/*此处用面向对象编程*/

#include<iostream>
#include<string.h>
using namespace std;
class Matrices
{
private:
    int mat[3][3];
public:
    Matrices();
    void input()
    {
        for(int i=0; i<3; i++)
        {
            for(int j=0; j<3; j++)
            {
                cin>>mat[i][j];
            }
        }
    }
    friend Matrices operator+(Matrices &,Matrices &);
    friend Matrices operator-(Matrices &a,Matrices &b);
    friend ostream &operator <<(ostream &output,Matrices &);
    friend istream &operator >>(istream &input,Matrices &);
};

Matrices ::Matrices()
{
    memset(mat,0,sizeof(mat));
}

istream &operator >>(istream &input,Matrices &a)
{
    for(int i=0; i<3; i++)
    {
        for(int j=0; j<3; j++)
        {
            input>>a.mat[i][j];
        }
    }
    return input;
}

ostream &operator <<(ostream &output,Matrices &a)
{
    for(int i=0; i<3; i++)
    {
        for(int j=0; j<3; j++)
        {
            output<<a.mat[i][j]<<"   ";
        }
        cout<<endl;
    }
    return output;
}

Matrices operator+(Matrices &a,Matrices &b)
{
    Matrices c;
    for(int i=0; i<3; i++)
    {
        for(int j=0; j<3; j++)
        {
            c.mat[i][j]=a.mat[i][j]+b.mat[i][j];
        }
    }
    return c;
}

Matrices operator-(Matrices &a,Matrices &b)
{
    Matrices c;
    for(int i=0; i<3; i++)
    {
        for(int j=0; j<3; j++)
        {
            c.mat[i][j]=a.mat[i][j]-b.mat[i][j];
        }
    }
    return c;
}

int main()
{
    cout<<"请输入需要进行的三阶加法运算(+)或减法运算(-)"<<endl;
    char c;
    Matrices A,B,C;
    while(cin>>c)
    {
        if(c==‘+‘||c==‘-‘)
        {
            if(c==‘+‘)
            {
                cout<<"转换成功!即将进行加法运算"<<endl;
                cout<<"请依次输入矩阵1,以回车换行(确认)"<<endl;
                cin>>A;
                cout<<"请依次输入矩阵2,以回车换行(确认)"<<endl;
                cin>>B;
                C=A+B;
                cout<<"运算成功!两矩阵的和为:"<<endl;
            }
            else
            {
                cout<<"转换成功!即将进行减法运算"<<endl;
                cout<<"请依次输入矩阵1,以回车换行(确认)"<<endl;

                cin>>A;
                cout<<"请依次输入矩阵2,以回车换行(确认)"<<endl;
                cin>>B;
                C=A-B;

                cout<<"运算成功!两矩阵的差为:"<<endl;
            }
            cout<<endl;
            cout<<C;
            cout<<"可输入‘+‘或‘-‘继续进行运算"<<endl;
        }
        else cout<<"数据格式错误!请重新输入:"<<endl;
    }
}

/*

测试数据

1 1 1
2 2 2
3 3 3

1 1 1
2 2 2
3 3 3
*/
时间: 2025-01-06 05:26:32

C++面向对象编程解决三阶矩阵相加减的相关文章

为什么前端后端都要学好面向对象编程思想?

一 面向对象和面向过程 前端js编程和及后端php编程,大体上有"面向过程"和"面向对象"两种开发思路. 简单业务需求使用"面向过程"思路倒是不错,简单快捷.然而随着业务逻辑增加,功能扩展及维护,慢慢会发现,之前的面向过程开发思路,渐渐不好使了.曾经遇到一个项目,多城市选择,既可以选择省,也可以选择市,但最多只能为3个,且不能重复.当时js用的就是面向过程方式写的,外加封装几个函数.但越往后,越发现,这种代码思路,后期维护,功能扩展,简直就是大坑

面向过程编程(OPP) 和面向对象编程(OOP)的关系

面向过程编程(OPP) 和面向对象编程(OOP)的关系 原文链接:http://blog.csdn.net/phphot/article/details/3985480 关于面向过程的编程(OPP)和面向对象的编程(OOP),给出这它们的定义的人很多,您可以从任何资料中找到很专业的解释,但以我的经验来看,讲的相对枯燥一点,不是很直观.除非您已经有了相当的积累,否则说起来还是比较费劲. 我是个老程序员出身,虽然现在的日常工作更多倾向了管理,但至今依然保持编码的习惯,这句话什么意思呢?我跟大家沟通应

面向对象编程思想

http://blog.csdn.net/yzh648542313/article/details/34157593 面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计. 它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单

黑马程序员-----面向对象编程概念

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲   面向对象编程概念 本小节知识点: 1.[了解]编程的实质是什么? 2.[掌握]面向对象的基本概念 类    包    接口      继承      多态 ( 面向过程是强调我们要做一件事情有哪些步骤, 面向对象是强调我们做一件事

[.net 面向对象编程基础] (17) 数组与集合

[.net 面向对象编程基础] (17) 数组与集合 学习了前面的C#三大特性,及接口,抽象类这些相对抽象的东西以后,是不是有点很累的感觉.具体的东西总是容易理解,因此我们在介绍前面抽象概念的时候,总是举的是具体的实例以加深理解. 本节内容相当具体,学起来也相当轻松. 1.数组 1.1 什么是数组? 数组是一种数据结构,包含同一个类型的多个元素. 1.2数组的初始化 string[] mystringArray; 类型+方框号 数组名 1.3数组初始化 我们知道数组是引用类型,所以需要给他分配堆

Day6 - Python基础6 面向对象编程

Python之路,Day6 - 面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 1 2 3 4 5 6 7 8 9 10 11

Python黑帽编程2.9 面向对象编程

Python黑帽编程2.9 面向对象编程 我个人认为,计算机语言的发展,有两个方向,一个是从低到高的发展过程,在这个过程中,语言的思考和解决问题的方式是面向硬件的.硬件本质上处理的是信号,在此基础上,我们给硬件赋予了一定的"逻辑思维"能力,为了方便硬件帮我们做事,抽象出了指令的概念,进而出现了汇编语言,然后有了Pascal和C这样的标准的结构化语言.语言一路向上发展,都是根植于指令的,根植于指令就意味着流程和数据代表了一切,数据的变化成为我们表达和抽象这个世界的根本.不可否认,宇宙间的

day7 面向对象编程

编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向过程编程和面向对象编程 面向过程编程

C++ Primer 学习笔记_71_面向对象编程 --句柄类与继承

面向对象编程 --句柄类与继承 引言: C++中面向对象编程的一个颇具讽刺意味的地方是:不能使用对象支持面向对象编程,相反,必须使用指针或引用. void get_prices(Item_base object, Item_base *pointer, Item_base &reference){ //需要根据指针或引用实际所绑定的类型进行调用 cout<< pointer ->net_price(1)<< endl; cout<< reference.n