如果您已经设置了4x4矩阵。 实施例
Matrix A = [1 2 3 4;
5 6 7 8;`
9 10 11 12;
13 14 15 16]
Matrix B = [1, 2, 3]
您如何将Matrix A转换为C编码?还有什么位置代码?对于位置我的意思是:如果我试图将第一行乘以矩阵B,我可以这样做吗?
A[1][0]*B[0]+A[1][1]*B[1]+A[1][2]*B[2]
大纲代码:
main(){
int matrixA[4][4] = [{"1","2","3","4"};
{"5","6","7","8"};
{"9","10","11","12"};
{"13","14","15","16"}];
printf(matrix A);
return 0;
}
答案 0 :(得分:1)
首先,你不能将1×3矩阵与4×4矩阵相乘。 你应该有m×n和n×p这样的矩阵来使它们相乘(结果将是m×p矩阵)。
对于在C中使用4×4矩阵,您应该像这样实现它:
int main()
{
int mat[4][4];
for(int i=0;i<=3;i++)
{
for(int j=0;j<=3;j++)
{
scanf("%d", &mat[i][j]);
}
}
return 0;
}
答案 1 :(得分:0)
据我所知,你想制作一个程序来执行与矩阵相关的数学分数。线性代数中的例子。不检查矩阵大小,但您明白了。在除法中,您必须计算Array2 ^ -1才能找到它。希望我帮忙。找到后,将结果乘以Array1。然而,在分工中,事情变得更加复杂。您需要以不同的方式处理编码,具体取决于您拥有的数组(矩阵)维度。必须包含例外,并且需要阅读关于如何划分这些矩阵的一些理论。有关详细信息,请参阅https://en.wikipedia.org/wiki/Division_(mathematics)。
#include <stdio.h>
#include <math.h>
int main(){
//counters
int i=0,j=0,k=0,sum=0;
//first array
int Array1[4][4] ={
{87,96,70,22},
{18,65,77,78},
{76,72,84,65},
{87,93,73,77}};
//second array
int Array2[4][4]={
{14,45,66,88},
{45,32,97,44},
{34,64,23,66},
{39,98,55,32}};
//result array.
int ResultArray[4][4];
// Add
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
ResultArray[i][j]= Array1[i][j]+Array2[i][j];
}
}
//result
printf("\tAdd Array1 and Array2\n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf(" %10d \t",ResultArray[i][j]);
}
printf("\n");
}
//subtract
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
ResultArray[i][j]= Array1[i][j]-Array2[i][j];
}
}
//result
printf("\tSubtract Array1 and Array2\n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf(" %10d \t",ResultArray[i][j]);
}
printf("\n");
}
//multiply
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
for (k = 0; k < 4; ++k) {
sum=sum+Array1[i][k]*Array2[k][j];
}
ResultArray[i][j]=sum;
sum=0;
}
}
//result
printf("\tMultiplication Array1 and Array2\n");
for (i = 0; i < 4; ++i) {
for (j = 0; j < 4; ++j) {
printf(" %10d \t",ResultArray[i][j]);
}
printf("\n");
}
return 0;
}
答案 2 :(得分:-1)
int matrixA[4][4] = {
{ 1, 2, 3, 4},//matrixA[0][0] is 1
{ 5, 6, 7, 8},//matrixA[1][1] is 6
{ 9, 10, 11, 12},
{13, 14, 15, 16}
};
int matrixB[] = { 1, 2, 3};
for(int r = 0; r < 4; ++r){
for(int c = 0; c < 4; ++c){
printf("%3d", matrixA[r][c]);
}
printf("\n");
}
答案 3 :(得分:-1)
让我帮助你一点,但你反过来帮助我理解这个问题。 :)
Ok矩阵使用二维数组表示。 像
int a[][]= { {1,2,3,4}, {5,6,7,8},{9,10,11,12},{13,14,15,16}};
Matrix准备就绪。 :)
如果您想动态创建它.. malloc()
将成为您的朋友。
这里我想说你必须动态分配数组。
例如:
int **a;
a= malloc(sizeof(int*)*m);
for(int i=0;i<m;i++)
a[i]=malloc(sizeof(int)*n);
Forming mxn matrix where m and n are got as input maybe.
在您的案例中A[4x4] B[1x4] so p=4,m=1,q=4.
for (c = 0; c < m; c++) {
for (d = 0; d < q; d++) {
for (k = 0; k < p; k++) {
sum = sum + first[c][k]*second[k][d];
}
multiply[c][d] = sum;
sum = 0;
}
}