1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#include <iostream.h>
class matrix
{
public:
    matrix( int r = 2, int c = 2 );
    matrix( matrix &m );
    ~matrix();
    void set( void );
 
 
    matrix operator =( matrix &m );
 
 
    matrix operator +( matrix &m ); 
 
 
    matrix operator -( matrix &m ); 
 
 
    matrix operator *( matrix &m ); 
 
 
    double operator ()( int x, int y );
 
 
    matrix rev( void );
 
 
    friend ostream & operator <<( ostream & out, matrix &m );
 
 
private:
    int row;
    int col;
    double  **p;
};
matrix::matrix( int r, int c )
{
    int i;
    row = r;
    col = c;
    p   = new double*[row];
    for ( i = 0; i < row; i++ )
        *(p + i) = new double [col];
}
 
 
matrix::matrix( matrix &m )
{
    int i, j;
    row = m.row;
    col = m.col;
    p   = new double*[row];
    for ( i = 0; i < row; i++ )
        *(p + i) = new double [col];
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < col; j++ )
            *(*(p + i) + j) = *(*(m.p + i) + j);
}
 
 
matrix::~matrix()
{
    int i;
    for ( i = 0; i < row; i++ )
        delete[]*(p + i);
    delete[]p;
}
 
 
void matrix::set( void )
{
    int i, j;
    cout << "??????????????:" << endl;
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < col; j++ )
            cin >> *(*(p + i) + j);
}
 
 
matrix matrix::operator =( matrix &m )
{
    int i, j;
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < col; j++ )
            *(*(p + i) + j) = *(*(m.p + i) + j);
    return(*this);
}
 
 
matrix matrix:: operator +( matrix &m )
{
    int i, j;
    matrix  a( row, col );
    if ( row != m.row || col != m.col )
        throw 0;
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < col; j++ )
            *(*(a.p + i) + j) = *(*(p + i) + j) + *(*(m.p + i) + j);
    return(a);
}
 
 
matrix matrix::operator -( matrix &m )
{
    int i, j;
    matrix  a( row, col );
    if ( row != m.row || col != m.col )
        throw 0;
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < col; j++ )
            *(*(a.p + i) + j) = *(*(p + i) + j) - *(*(m.p + i) + j);
    return(a);
}
 
 
matrix matrix::operator *( matrix &m )
{
    if ( col != m.row )     
        throw 0;       
    int i, j, k;
    double  sum;
    matrix  a( row, m.col );
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < m.col; j++ )
        {
            for ( k = 0, sum = 0; k < col; k++ )
                sum = sum + *(*(p + i) + k) * *(*(m.p + k) + j);
            *(*(a.p + i) + j) = sum;
        }
    return(a);
}
 
 
double matrix::operator ()( int x, int y )
{
    if ( x > row || y > col )      
        throw 0.0;             
    return(*(*(p + x - 1) + y - 1) );
}
 
 
matrix matrix::rev( void )             
{
    int i, j;
    matrix  a( col, row );
    for ( i = 0; i < row; i++ )
        for ( j = 0; j < col; j++ )
            *(*(a.p + j) + i) = *(*(p + i) + j);
    return(a);
}
 
 
ostream & operator <<( ostream & out, matrix &m )
{
    int i, j;
    for ( i = 0; i < m.row; i++ )
    {
        for ( j = 0; j < m.col; j++ )
            out << *(*(m.p + i) + j) << " ";
        out << endl;
    }
    return(out);
}
 
 
int main()
{
    matrix a( 2, 3 ), b( 3, 2 );
    a.set();
    b = a.rev();
    cout << "????a:" << endl;
    cout << a;
    cout << "????a??????b:" << endl;
    cout << b;
    return(0);
}

矩阵类c++实现的更多相关文章

  1. NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析

    哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...

  2. OpenGL矩阵类(C++)

    概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例:投影矩阵 概述 OpenGL固定功能管线提供4个不同类型的矩阵(GL_MODELVIEW.GL_PROJECTION. ...

  3. [Java]编写自己的Matrix矩阵类

    用java实现一个简单的矩阵类,可以实现简单的矩阵计算功能. class Matrix 1.向量点乘 public static double dot(double[] x,double[] y) 2 ...

  4. 精解Mat类(一):基本数据类型-固定大小的 矩阵类(Matx) 向量类(Vector)

    一.基础数据类型 1.(基础)固定大小矩阵类 matx 说明: ①    基础矩阵是我个人增加的描述,相对于Mat矩阵类(存储图像信息的大矩阵)而言. ②    固定大小矩阵类必须在编译期间就知晓其维 ...

  5. 矩阵类的python实现

    科学计算离不开矩阵的运算.当然,python已经有非常好的现成的库:numpy. 我写这个矩阵类,并不是打算重新造一个轮子,只是作为一个练习,记录在此. 注:这个类的函数还没全部实现,慢慢在完善吧. ...

  6. OpenGL矩阵类(C++) 【转】

    http://www.cnblogs.com/hefee/p/3816727.html OpenGL矩阵类(C++) 概述 创建&初始化 存取器 矩阵运算 变换函数 实例:模型视图矩阵 实例: ...

  7. C++实现矩阵类和向量类

    C++期末作业内容,写完之后觉得过于臃肿,又重新搞了个新的.新的当作业交,旧的拿来给同学参考. [问题描述]请仿照复数类,设计一个矩阵类,设计矩阵类的构成元素 1.编写构造函数完成初始化 2.编写成员 ...

  8. 实用矩阵类(Matrix)(带测试)

    引言: 无意间看到国外一个网站写的Matrix类,实现了加减乘除基本运算以及各自的const版本等等,功能还算比较完善,,于是记录下来,以备后用: #ifndef MATRIX_H #define M ...

  9. [Android] 使用Matrix矩阵类对图像进行缩放、旋转、对照度、亮度处理

        前一篇文章讲述了Android拍照.截图.保存并显示在ImageView控件中,该篇文章继续讲述Android图像处理技术,主要操作包含:通过打开相冊里的图片,使用Matrix对图像进行缩放. ...

  10. c++实现矩阵类矩阵行列式,伴随矩阵,逆矩阵

    //Matrix ver1.0 //只支持矩阵内部(方阵)的运算 #include<iostream> #include<math.h> using namespace std ...

随机推荐

  1. iOS身份证号码识别

    一.前言   身份证识别,又称OCR技术.OCR技术是光学字符识别的缩写,是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使 ...

  2. 关于ASCII,Unicode和UTF-8

    自己也不是很明白这些编码,百度了一下,整理出来与大家分享分享,在此感谢作者. 先说说这些编码 ANSI:最早的时候计算机ASCII码只能表示256个符号(含控制符号),这个字符集表示英文字母足够,其中 ...

  3. MQ队列堆积太长,消费不过来怎么办(转)

    转自:http://windwrite.com/archives/603 我们现有的业务就面临此问题,消息生产太快,消费不过来,导致队列堆积很长,把服务器内存耗尽,这时RabbitMQ的处理能力很低下 ...

  4. 深入了解——CSS3新增属性

    CSS3 选择器(Selector) 写过 CSS 的人应该对 CSS 选择器不陌生,我们所定义的 CSS 属性之所以能应用到相应的节点上,就是因为 CSS 选择器模式.参考下述代码: 清单 1. C ...

  5. C#中的??是什么意思

    C#中的??是什么意思 DJ8Angus | 浏览 49982 次  2012-01-16 12:07 2012-01-16 12:23   最佳答案   如果不赋予初值,C#的变量是不允许直接使用的 ...

  6. HDU 5829 Rikka with Subset

    快速数论变换ntt. 早上才刚刚接触了一下FFT,然后就开始撸这题了,所以要详细地记录一下. 看了这篇巨巨的博客才慢慢领会的:http://blog.csdn.net/cqu_hyx/article/ ...

  7. spring ,mybatis多数据源

    同一个项目有时会涉及到多个数据库,也就是多数据源.多数据源又可以分为两种情况:   1)两个或多个数据库没有相关性,各自独立,其实这种可以作为两个项目来开发.比如在游戏开发中一个数据库是平台数据库,其 ...

  8. url中去掉index.php,方便redirect()

    01 配置文件 return Array( 'URL_MODEL' => '2',); 02 index.php入口文件下面加入文件 .htaccess -->使用editplus--&g ...

  9. OpenCV2.x自学笔记——Qt5.5.1打包exe

    [简易步骤] 1.Release模式下生成exe,在release文件夹内,如jujube.exe 2.exe单独拷贝到一个文件夹,如D:\jujube\jujube.exe 3.打开Qt 官方开发环 ...

  10. PHP中使用CURL(五)

    curl伪造IP和来源 client.php请求server.php client.php <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_U ...