首页 > 编程语言 >编程打卡:C语言程序设计

编程打卡:C语言程序设计

时间:2023-05-16 18:48:44浏览次数:36  
标签:Matrix mat int 编程 ++ C语言 column 打卡 row

#include <iostream>
#include <iomanip>
using namespace std;
class Matrix {
    private:
    int row;
    int column;
    int **mat = nullptr;
    public:
    Matrix(int r = 1,int c = 1):row(r),column(c) {
        mat = new int*[row];
        for (int i = 0; i < row; i++)
            mat[i] = new int[column];
    }
    Matrix(const Matrix &m):row(m.row),column(m.column) {
        mat = new int*[row];
        for (int i = 0; i < row; i++) {
            mat[i] = new int[column];
            for (int j = 0; j < column; j++)
                mat[i][j] = m.mat[i][j];
        }
    }
    ~Matrix() {
        for (int i = 0; i < row; i++)
            delete [] mat[i];
        delete [] mat;
    }
    void input() {
        for (int i = 0; i < row; i++)
            for (int j = 0; j < column; j++)
                cin >> mat[i][j];
    }
    void display() {
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < column; j++)
                cout << setw(10) << mat[i][j];
            cout << endl;
        }
    }
    Matrix operator*(const Matrix &m) {
        if (column == 1 && row == 1) {
            Matrix temp(m.row,m.column)
            for (int i = 0; i < m.row; i++)
                for (int j = 0; j < m.column; j++)
                    temp.mat[i][j] = mat[0][0] * m.mat[i][j];
            return temp;
        }
        if (m.column == 1 && m.row == 1) {
            Matrix temp(row,column)
            for (int i = 0; i < row; i++)
                for (int j = 0; j < column; j++)
                    temp.mat[i][j] = mat[i][j] * m.mat[0][0];
            return temp;
        }
        Matrix temp(row,m.column);
        for (int i = 0; i < row; i++)
            for (int j = 0; j < m.column; j++) {
                temp.mat[i][j] = 0;
                for (int k = 0; k < column; k++)
                    temp.mat[i][j] += mat[i][k] * m.mat[k][j];
            }
        return temp;
    }
};
int main () {
    int r1,c1,r2,c2;
    cin >> r1 >> c1;
    Matrix m1(r1,c1);
    m1.input();
    cin >> r2 >> c2;
    Matrix m2(r2,c2);
    m2.input();
    if (c1 == r2 || (c1 == 0 && r2 == 0)) {
        Matrix m3 = m1 * m2;
        m3.display();
    }
    cout << "Invalid Matrix multiplication!" << endl;
    return 0;
    return 0;
}

标签:Matrix,mat,int,编程,++,C语言,column,打卡,row
From: https://www.cnblogs.com/sugar-refinery/p/17406475.html

相关文章

  • 关于 rxjs 编程中的 take(1) 操作
    对rxjs中的Observable使用take(1)操作符不会引起副作用。take(1)只是取Observable中第一个发出的值,并且会立即完成。它会使得Observable中只有一个值被发出并且完成,而不会影响其他代码。然而,如果Observable中包含了副作用操作,例如调用了HTTP请求或者改变了共享状......
  • C语言基本概念之表达式
    什么是表达式(表达式的定义)?表达式是C语言的重要语法成分,不过对于表达式的定义,好像从来没有人关注过。今天就孔乙己一把吧,哈哈。先贴标准对expression的定义(ISO/IEC9899:20116.5):Anexpressionisasequenceofoperatorsandoperandsthatspecifiescomputationofavalue,o......
  • 5.2 从键盘任意输入一个整数,编程判断它的奇偶性。
    设计思路:了解奇数和偶数的性质后,运用合适的运算符和判断语句设计程序代码:#include<stdio.h>intmain(){inta;scanf("%d",&a);if(a%2==0)printf("%d为偶数",a);elseprintf("%d为奇数");return0;}总结:C除余语言运算符的运用......
  • c++打卡练习(31)
    求两个整数的最大公因数流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ intx,y,i,k; cout<<"请输入两个整数"<<endl; cin>>x; cin>>y; if(x<y){ intt; t=x; x=y; y=t; } for(i=y;i>=1;i--){ if(x%i==0&&y%i=......
  • c++打卡练习(30)
    不重复的三位数用1234这四个数组成不重复的三位数,每个数位的数也不同,问都有谁流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta,b,c,d; for(a=1;a<=4;a++){ for(b=1;b<=4;b++){ for(c=1;c<=4;c++){ if(a!=b&&a!=c&&b!=c){ cout<<a&......
  • [每天例题]蓝桥杯 C语言 笨小猴
    笨小猴题目  思路分析1.首先难点是找出出现次数最多与最少的字母,我们可以通过建立两个数组,一个是字符数组,用来存储字符串,一个是整形数组,用来记录每个字母对应的出现次数,然后再使用for—if配合找出最大最小数2,第二个可以通过调用函数来确定差值是否为素数代码#include<......
  • Java网络编程----通过实现简易聊天工具来聊聊BIO
    IO模型即输入输出模型,我们今天主要来聊的是java网络编程中的IO模型---BIO模型。BIO即阻塞式IO,BlockingIOblocking[ˈblɒkɪŋ]v. 堵塞;阻塞;堵住(某人的路等);挡住(某人的视线等);妨碍;阻碍;那究竟什么是阻塞呢?这里的阻塞和多线程并发控制中,对未持有锁的线程进行同步阻......
  • Go语言并发编程-cnblog
    并发编程并发vs并行举个形象点的例子并发可以理解为一边吃饭,一边喝水,因为人只有一个嘴一个咽喉,所以同一时刻饭和水只能有一样进入,二者只能交替进行并行可以理解为一边走路一边吃东西,因为走路是靠腿脚,吃东西是靠嘴,二者不相干,相当于两个独立的线程,因而可以同时进行Go语言......
  • 5.16打卡
    #include<bits/stdc++.h>usingnamespacestd;intf(intn){if(n==1)return1;elsereturnf(n-1)+n;}intmain(){inta;cin>>a;cout<<f(a)<<endl;return0;} ......
  • 打卡26
    4.4将真分数变为埃及分数 算法流程图 #include<bits/stdc++.h>usingnamespacestd;constintMOD=1e9+7;voidsolve(){ longlonga,b,c; cin>>a>>b; while(1) { if(b%a)c=b/a+1; elsec=b/a,a=1; if(a==1) { printf("1/%ld\n",c); break; } e......