在C程式設計中,兩個矩陣相乘,用子函式寫

2021-05-17 10:15:31 字數 2849 閱讀 3483

1樓:匿名使用者

用結構體過載運算子把:62616964757a686964616fe59b9ee7ad9431333339666161

struct maxtrix

maxtrix(int x)

{maxtrix ret;

ret.l=l;

for(int i=0;i

編寫c++程式,計算兩個矩陣的乘積,矩陣相乘設計成函式形式

2樓:匿名使用者

這得用到線性函式啊,都快忘沒了;

先分析一下矩陣相乘的演算法:

a[m][n] * b[n][p] = c[m][p]

其中c[i][j] = a[i][0] * b[0][j] + ... + a[i][n-1] * b[n-1][j]

現在我們就可以來寫程式了

#include

#include

#include

#include

using namespace std;

#define colum_num 2

typedef struct array

stru_array;

int func(stru_array *parray_1, stru_array *parray_2, stru_array **out_array);

int main(int argc, char **argv)

, };

int b[2][colum_num] = , };

int *print_tmp = null;

stru_array local_array1 = ;// 1 2

// 3 4

stru_array local_array2 = ;// 4 3

// 2 1

stru_array *local_out_array = null;

#if 0

printf("%d %d %d %d %d %d\n",

local_array1.parray[0][0],

local_array1.parray[0][1],

local_array1.parray[1][0],

local_array1.parray[1][1], local_array1.row, local_array1.row);

printf("%d %d %d %d %d %d\n",

local_array2.parray[0][0],

local_array2.parray[0][1],

local_array2.parray[1][0],

local_array2.parray[1][1], local_array2.row, local_array2.row);

#endif

print_tmp = (int *)local_out_array->parray;

//printf("%d %d \n", print_tmp[0], print_tmp[1]);

//printf("%d %d \n", print_tmp[2], print_tmp[3]);

cout

free(local_out_array);

}int func(stru_array *parray_1, stru_array *parray_2, stru_array **out_array)

*out_array = (stru_array *)malloc(sizeof(stru_array));

if (null == *out_array)

memset(*out_array, 0, sizeof(stru_array));

(*out_array)->parray = (int (*)[colum_num])malloc(parray_2->colum * parray_1->row);

if (null == (*out_array)->parray)

memset((*out_array)->parray, 0, (parray_2->colum * parray_1->row) * 4);

ptmp = (*out_array)->parray;

//i為新生成矩陣的行,j為新生成矩陣的列

for (i = 0; i < parray_1->row; i++)

}ptmp++;

}return 0;

}1 2

3 4與4 3

2 1相乘

執行結果正確:

./array

8 5

20 13

求c++兩矩陣相乘**

3樓:匿名使用者

#include

using namespace std;

void main()

;int b[4][3]=;

int data[3][3];

cout<<"a:\n"; //輸出原陣列aint i,j,k;

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

cout<

}cout<<"b:\n"; //輸出原陣列bfor(i=0;i<4;i++)

cout<

}for(i=0;i<3;i++) //向新陣列中存值}cout<<"data:\n"; //輸出新陣列for(i=0;i<3;i++)

cout<

程式設計序,用成員函式過載運算子和將兩個矩陣(這兩個矩陣均為2行3列)相加和相減

如下 include include using namespace std class maxtrix private int maxtrix 2 3 public maxtrix for int i 0 i 2 i for int j 0 j 3 j maxtrix i j 3 i j 1 vo...

c 多執行緒同時執行兩個函式該怎樣程式設計啊

這個是完全取決於bai你的需求。如果du 你只是做控制同一個資料zhi源使用的,就可以dao一個執行緒,分 內別在收到不同的訊息,容呼叫不同的函式。畢竟你只有一個鍵盤,不會真的同時收到兩個事件。這種構架下面,兩個函式必須比較短不能有堵塞,或者等待 大多數情況是這樣的 另外一種情況是,當你的處理量比較...

用c 程式設計的時候在兩個之間插入字母后面的就被代替了怎麼辦

按insert鍵 因為你啟用了覆蓋模式 從插入的位置開始,後面的字母依次向後移一位,例如a 100 a 99 a 99 a 98 好吧,我以為是程式設計的內容,原來是過程,按 insert 鍵就好了 鍵盤上的 insert 鍵一下。把後面的字母往後移動一個位置,再在原來的位置填入字母 c 程式設計中...