C++程序设计题,关于数组的1.矩阵的乘法 2.求满足三角形a*a=b(b+c)且c>b的整数解

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 05:03:55

C++程序设计题,关于数组的1.矩阵的乘法 2.求满足三角形a*a=b(b+c)且c>b的整数解
C++程序设计题,关于数组的
1.矩阵的乘法
2.求满足三角形a*a=b(b+c)且c>b的整数解

C++程序设计题,关于数组的1.矩阵的乘法 2.求满足三角形a*a=b(b+c)且c>b的整数解

只会前面那题.

封装了一个矩阵类,运算部分只添了矩阵相乘,至于相加,转置等可自行添加.

代码如下:

#include <iostream>

#include <fstream>

#include <iomanip>

using namespace std;

class Matrix

{

public:

Matrix(){row = col = 0;a = NULL;} //默认构造函数

Matrix(int r,int c); //带参数的构造函数

Matrix(Matrix& m);   //拷贝构造函数

~Matrix();  //析构函数

void Set_Row_Col(int r,int c); //设置行列

void Destroy();     //销毁

void Clear();       //清零

void Input(istream& in);     //输入

void Output(ostream& out);   //输出

bool IsEmpty(){ return !a;}  //判断矩阵是否为空

friend Matrix operator *(Matrix& A,Matrix& B); //重载乘法运算符

private:

int row;

int col;

int **a;

};

Matrix::Matrix(int r,int c):row(r),col(c)

{

a = new int*[r];

for(int i = 0;i < r;i++)

a[i]  = new int[c];

}

Matrix::Matrix(Matrix& m)

{

Destroy();

int i,j;

row = m.row;

col = m.col;

a = new int*[m.row];

for(int i = 0;i < m.row;i++)

a[i]  = new int[m.col];

for(i = 0;i < row;i++)

for(j = 0;j < col;j++)

a[i][j] = m.a[i][j];

}

Matrix::~Matrix()

Destroy();

}

void Matrix::Set_Row_Col(int r,int c)

{

Destroy();

row = r;

col = c;

a = new int*[r];

for(int i = 0;i < r;i++)

a[i]  = new int[c];

}

void Matrix::Destroy()

{

if(a) return;  

for(int i = 0;i < row;i++)

delete[] a[i];

delete[] a;

}

void Matrix::Clear()

{

int i,j;

for(i = 0;i < row;i++)

for(j = 0;j < col;j++)

a[i][j] = 0;

}

void Matrix::Input(istream& in)

{

int i,j;

int r,c;

in>>r>>c;

if(r != row || c != col) //如果输入的行列大小与原先不符,重置

Set_Row_Col(r,c);

for(i = 0;i < row;i++)

for(j = 0;j < col;j++)

in>>a[i][j];

}

void Matrix::Output(ostream& out)

{

int i,j;

for(i = 0;i < row;i++)

{

for(j = 0;j < col;j++)

cout<<setiosflags(ios_base::left)<<setw(4)<<a[i][j];

out<<endl;

}

}

Matrix operator *(Matrix& A,Matrix& B)

{

if(A.col != B.row)  

return Matrix();  //如果不能作乘法,返回空矩阵

int i,j,k;

int r,c;

r = A.row;

c = B.col;

Matrix C(r,c);

C.Clear();

for(i = 0;i < r;i++)

for(j = 0;j < c;j++)

for(k = 0;k < A.col;k++)

C.a[i][j] += A.a[i][k]*B.a[k][j]; 

return C;

}

int main()

{

int r,c;

Matrix A,B,C;

ifstream ifile;

ifile.open("data.txt",ios_base::in);

if(!ifile) 

{

cout<<!"不能打开文件"<<endl;

return 1;

}

A.Input(ifile);

B.Input(ifile);

C = A * B;

if(!C.IsEmpty())

C.Output(cout);

return 0;

一般地,矩阵的输入通过读文件比较方便,因此输入输出函数用输入输出流作参数.

需要读写文件时,可通过传入ifstream/oftream 对象实现;

需要从屏幕输入输出,可传入cin/cout 对象.

测试数据如下时

3 3

7 8 9

4 5 6

1 2 3

3 5

7 8 9 10 11

4 5 6 7 8

1 2 3 4 5

输出到屏幕如图.

封装类是为了方便使用,如果不常用到矩阵,仅为实现算法,直接截出乘法实现的函数即可.

C++程序设计题,关于数组的1.矩阵的乘法 2.求满足三角形a*a=b(b+c)且c>b的整数解 编写矩阵运算程序 C 语言编写四、编写矩阵运算程序要求:a) 功能包括:矩阵加、矩阵减、矩阵乘、矩阵三角化b) 实现方式1:函数的参数为:二维数组名、行数、列数 关于程序设计的循环语句~ 用matlab求一数组的最大值用matlab程序设计一个数组求他的最大值数组具有普遍性 用于引用数组的特定元素的数字称为数组的----填空题 关于C语言的 数组,矩阵,矢量的区别是什么? C语言有一道程序设计题不会,求大神帮忙啊.求N*N矩阵的主对角线(左上-右下)元素的和并输出. 例如,当矩阵为: 1 6 2 2 3 5 4 5 编写矩阵运算程序(C语言编写)a) 功能包括:矩阵加、矩阵减、矩阵乘、矩阵三角化b) 实现方式1:函数的参数为:二维数组名、行数、列数c) 实现方式2:函数的参数为:指向元素的指针、 c++程序设计 求一个3*3的整形二维数组对角线元素之和 C语言编写矩阵运算程序! 帮帮忙吧!我实在是不会写要求:a) 功能包括:矩阵加、矩阵减、矩阵乘、矩阵三角化b) 实现方式1:函数的参数为:二维数组名、行数、列数c) 实现 关于C程序设计的一道题这道题为什么答案是7,而不是4呢? 求解两道关于二维数组的c语言编程题1:求4*4矩阵的主对角线元素积与副对角线元素积的差.2:以直角三角形形式打印出杨辉三角的前十行. 求解两道关于二维数组的c语言编程题1:求4*4矩阵的主对角线元素积与副对角线元素积的差.2:以直角三角形形式打印出杨辉三角的前十行. 关于C 语言程序设计用二维数组求两个3行4列数组相加的和, c语言编程,二维数组求助/*输入一个M*N的整数矩阵(3 用C语言求出【200,1000】的双胞胎数的对数运用知识范围:顺序结构程序设计,选择结构程序设计,循环结构程序设计,数组》因为俺只学到这里,再深奥就看不懂了.囧(PS:若两个素数之差为2,则 matlab程序设计题1根据要求完成如下操作!①创建六维随机方阵A,矩阵元素为5~85的整数.②提取A中三至五行,1、5、6列组成新的矩阵Y.③将矩阵A的第一行元素全部变为10,并赋值给C.④将矩阵A和C横 关于矩阵乘法,矩阵A乘矩阵B得到矩阵C,那么由矩阵C怎么得到矩阵A?看希尔密码的时候看到的...他们说矩阵C得到矩阵A要解同余方程,这个方程我不会...我想知道有没有其它方法?是矩阵A乘以B矩