VB:随机生成两个n×n矩阵,先写程序实现这两个矩阵的相加

VB:随机生成两个n×n矩阵,先写程序实现这两个矩阵的相加,第1张

Dim a() As Integer, b() As Integer, c() As Integer

Private Sub Command1_Click()

Dim i As Integer, j As Integer, a3 As String

ReDim c(1 To Val(Text1), 1 To Val(Text1))

For i = 1 To Val(Text1)

For j = 1 To Val(Text1)

c(i, j) = a(i, j) + b(i, j)

a3 = a3 & c(i, j) & " "

Next

a3 = a3 & vbCrLf

Next

Text4 = a3

End Sub

Private Sub Form_Load()

Randomize Timer

Text1 = 4

Text4 = ""

End Sub

Private Sub Text1_Change()

Text2 = "": Text3 = ""

Dim a1 As String, a2 As String, i As Integer, j As Integer

ReDim a(1 To Val(Text1), 1 To Val(Text1))

ReDim b(1 To Val(Text1), 1 To Val(Text1))

ReDim c(1 To Val(Text1), 1 To Val(Text1))

For i = 1 To Val(Text1)

For j = 1 To Val(Text1)

a(i, j) = Int(Rnd 100)

a1 = a1 & a(i, j) & " "

b(i, j) = Int(Rnd 100)

a2 = a2 & b(i, j) & " "

Next

a1 = a1 & vbCrLf

a2 = a2 & vbCrLf

Next

Text2 = a1: Text3 = a2

End Sub

矩阵的大小可以通过N,M来改变,数据自己也可以改为你想要的

程序如下:

#define N 3

#define M 3

main()

{

int a[N][M]={1,2,3,4,5,6,7,8,9}, b[N][M]={9,8,7,6,5,4,3,2,1},c[N][M],d[N][M],i,j;

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

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

{

c[i][j]=a[i][j]+b[i][j]; /相加A+B/

d[i][j]=a[i][j]-b[i][j]; /相减A-B/

}

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

{

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

printf("%d ",c[i][j]);

printf("\n");

}

pingtf("\n");

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

{

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

printf("%d ",d[i][j]);

printf("\n");

}

}

1首先打开vs2015,然后创建一个form窗体程序,当然你也可以创建一个控制台应用程序,看个人需要,小编建议用窗体,因为界面比较清晰,有层次;然后创建一个textbox用来显示矩阵相加的结果。

2先来定义两个矩阵A、B,并给他们赋值,后面就用这两个矩阵进行相加计算。 double [,] A = new double[2,4] { { 1, 2, 3, 4}, { 4, 5, 6, 7} }; double [,] B = new double[2, 4] { { 11, 12, 13, 14 }, { 14, 15, 16, 17 } };

3下面来写一个矩阵相加的类,当我们要进行矩阵相加计算时调用这个类就可以了,还有一种方法是可以写成函数,调用函数也是可以的。 右键解决方案下的程序名,选择添加-类。

// 111cpp : Defines the entry point for the console application

//

#include "stdafxh"

//

/题目:矩阵加减乘演示/

/作者:vc99 writed for c bar/

/日期:200595/

/版本:Version 11

/简介:本演示引入第三个矩阵来保存运算结果,以达到连续运算的目的。/

//

# include "stdioh"

# include "stdlibh"

# define X 3

# define Y 3

/输出数组/

void prt(int a[X][Y])

{

int i,j;

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

{

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

printf(" %5d",a[i][j]);

printf("\n");

}

}

/输入数组/

void inp(int a[X][Y], char s)

{

int i,j,t;

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

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

{

printf("%c[%d][%d]=",s,i,j);/提示输入数组s的[i][j]元素 /

scanf("%d",&t);

a[i][j]=t;

}

}

/矩阵加,结果保存于m[][]/

void madd(int a[X][Y],int b[X][Y],int m[X][Y])

{

int i,j;

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

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

m[i][j]=a[i][j]+b[i][j];/矩阵加/

prt(m);

}

/矩阵减,结果保存于m[][]/

void msub(int a[X][Y],int b[X][Y],int m[X][Y])

{

int i,j;

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

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

m[i][j]=a[i][j]-b[i][j];/矩阵减/

prt(m);

}

/矩阵乘,结果保存于m[][]/

void mmul(int a[X][Y],int b[X][Y],int m[X][Y])

{

int i,j,k;

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

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

m[i][j]=0;

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

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

for(k=0;k<Y;k++)

m[i][j]+=a[i][k]b[k][j];/矩阵乘/

prt(m);

}

int main(int argc, char argv[])

{

int sel=0,agn=1,cpt=1;

int a[X][Y], b[X][Y], m[X][Y];

while(agn==1)

{

printf("请输入矩阵a!\n");

inp(a,'a');

printf("请输入矩阵b!\n");

inp(b,'b');

while (cpt==1)

{

printf("请选择矩阵运算:[1]+ [2]- [3]\n\t");

scanf("%d",&sel);

if (sel==1) madd(a,b,m);

if (sel==2) msub(a,b,m);

if (sel==3) mmul(a,b,m);

printf("重新运算?[1]是 [0]否");

scanf("%d",&cpt);

}

printf("是否重新输入矩阵?[1]是 [0]否");

scanf("%d",&agn);

}

return 0;

}

要进行矩阵内相加,可以使用矩阵的行、列和元素的索引。对于给定的矩阵:

1, 3, 5, 7, 9

1, 3, 6, 7, 9

1, 3, 7, 7, 9

要计算所有元素的总和,可以使用双重循环遍历矩阵的每个元素,并将它们相加。具体来说,可以使用以下代码:

matrix = [[1, 3, 5, 7, 9], [1, 3, 6, 7, 9], [1, 3, 7, 7, 9]]

total = 0

for i in range(len(matrix)):

for j in range(len(matrix[i])):

total += matrix[i][j]

print(total)

这将输出矩阵所有元素的总和,即252。

如果需要计算某一行或某一列的总和,可以在遍历时只计算特定的行或列。例如,计算第一行的总和,可以使用以下代码:

matrix = [[1, 3, 5, 7, 9], [1, 3, 6, 7, 9], [1, 3, 7, 7, 9]]

total = 0

for j in range(len(matrix[0])):

total += matrix[0][j]

print(total)

这将输出第一行的总和,即25。

需要注意的是,矩阵内相加时需要保证每行或每列的元素数量相同,否则无法进行相加

这两个程序可以实现任意维数矩阵的相加与相乘,只需传入相应参数即可。

void Add(double a, double b, double c, int m, int n)

{

//a是第一个矩阵,b是第二个矩阵,c是输出结果,m与n是行数和列数

int i,j;

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

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

c[in+j]=a[in+j]+b[in+j];

}

void Multiply(double a, double b, double c, int m, int n, int l)

{

//a是第一个矩阵,b是第二个矩阵,c是输出结果,m与n是第一个矩阵维数,n,l是第二个矩阵维数

int i,j,k;

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

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

{

c[li+j]=0;

for(k=0;k<n;k++)

{

c[li+j]=c[li+j] +a[ni+k]b[j+kl];

}

}

}

#include<stdioh>

#include<stdlibh>

void memory(int p,int m,int n); //分配的内存的函数;

void readdata(intp,int m,int n);

void plus(int u,int i,int m,int n); //求和函数,要求两个矩阵同型

void redu(int u,int i,int m,int n); //求差,要求两个矩阵同型

void mult(int u,int i,int m,int n); //矩阵的积;乘法要求前一个矩阵的行数等于后一个矩阵的列数;

void release(int p,int m,int n); //释放内存的函数;

int main() //也可使用switch语句来选择求和求差求积

{

int m,n;

scanf("%d%d",&m,&n); //输入m,n两个数,确定矩阵要分配内存的大小

int k,q,o;

memory(k,m,n);

memory(q,m,n);

memory(o,m,n); //备用,用来存放结果的一块内存;

readdata(k,m,n);

readdata(q,m,n);

plus(k,q,m,n);

redu(k,q,m,n);

mult(k,q,m,n); //在本行加//则可不求矩阵乘法,使程序适用于一切mn的矩阵加法;

realease(k,m,n);

realease(q,m,n);

}

void memory(int p,int m,int n)

{

p=(int)malloc(msizeof(int);

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

{

p[i]=(int)malloc(nsizeof(int));

}

}

void release(int p,int m,int n)

{

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

{

free(p[i]);

p[i]=0;

}

free(p);

p=0;

}

void readdata(int p,int m,int n)

{

int i,j;

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

{

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

scanf("%d",&p[i][j]); //要求用户由行到列输入矩阵的数据;

}

}

void plus(int u,int i,int m,int n)

{

int r,j;

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

{

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

printf("%5d",u[r][j]+i[r][j]);

printf("\n");

}

}

void redu(int u,int i,int m,int n)

{

int r,j;

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

{

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

printf("%5d",u[r][j]-i[r][j]);

printf("\n");

}

void mult(int u,int i,int m,int n)

{

int r,j,k,d=0;

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

{

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

{

for(k=0;k<m;k++) //这里分号错写成了逗号

d=d+u[r][k]i[k][r];

printf("%d",d);

}

d=0;

printf("\n");

}

}

以上就是关于VB:随机生成两个n×n矩阵,先写程序实现这两个矩阵的相加全部的内容,包括:VB:随机生成两个n×n矩阵,先写程序实现这两个矩阵的相加、两个矩阵相加减的程序怎么编写请C语言高手帮忙、c#如何实现矩阵相加窗体文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9462625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存