亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

學習二維動態數組指針做矩陣運算的方法

2020-05-23 14:16:44
字體:
來源:轉載
供稿:網友

這片文章介紹了如何利用二維動態數組指針做矩陣運算,需要的朋友可以參考下

本文分享了利用二維動態數組指針做矩陣運算的實現代碼。

1. 頭文件

 

 
  1. // juzhen 2.cpp : Defines the entry point for the console application. 
  2. // 
  3.  
  4. #include "stdafx.h" 
  5. #include "stdlib.h" 
  6. #include "windows.h" 
  7. #define OK 0 
  8. #define NG -1 
  9. typedef struct mat 
  10. int nRow; /* 行數 */ 
  11. int nCol; /* 列數 */ 
  12. int* pData; /* 指向矩??體的指? */ 
  13. }MAT; 

2. 程序代碼

 

 
  1. #include "stdafx.h" 
  2. #include "Matrix_cal.h" 
  3. /* Entity and initial matrix of the application matrix function */ 
  4. int MATAlloc(MAT *pMat, int nRow, int nCol) 
  5. pMat->pData = (int *) malloc (nRow * nCol * sizeof(int) ); 
  6. if(NULL == pMat->pData) 
  7. printf("Memary is error!/n"); 
  8. return NG; 
  9. for(int i=0; i<nRow; ++i) 
  10. for(int j=0; j<nCol; ++j) 
  11. *(pMat->pData + i*nCol + j)=0; 
  12. pMat->nRow = nRow; 
  13. pMat->nCol = nCol; 
  14. return OK; 
  15.  
  16. /* Release the memory space and reset the matrix data function */ 
  17. void MATFree(MAT* pMat) 
  18. free(pMat->pData); 
  19. pMat->pData = NULL; 
  20. pMat->nRow = 0; 
  21. pMat->nCol = 0; 
  22.  
  23. /* Import of matrix function */ 
  24. int MATAssign (MAT* pMat1, const MAT* pMat2) 
  25. MATAlloc(pMat1, pMat2->nRow, pMat2->nCol); 
  26. for(int i=0; i < pMat1->nRow; ++i) 
  27. for(int j=0; j < pMat1->nCol; ++j) 
  28. *(pMat1->pData + i * pMat1->nCol + j) = *(pMat2->pData + i * pMat1->nCol + j); 
  29. return OK;  
  30.  
  31. /* Matrix sum function */ 
  32. int MATAdd(const MAT* pMat1, const MAT* pMat2, MAT* pMat3) 
  33. MATAlloc(pMat3, pMat1->nRow, pMat1->nCol); 
  34. if((pMat1->nRow == pMat2->nRow) && (pMat1->nCol == pMat2->nCol)) 
  35. for(int i=0; i<pMat1->nRow; ++i) 
  36. for(int j=0; j<pMat1->nCol; ++j) 
  37. *(pMat3->pData + i * pMat3->nCol + j) = *(pMat1->pData + i * pMat1->nCol + j) + *(pMat2->pData + i * pMat1->nCol + j); 
  38. return OK;  
  39. else 
  40. printf("Not add!/n"); 
  41. return NG; 
  42.  
  43.  
  44. /* Matrix subtraction function */ 
  45. int MATSub(const MAT* pMat1, const MAT* pMat2, MAT* pMat3) 
  46. MATAlloc(pMat3, pMat1->nRow, pMat1->nCol); 
  47. if((pMat1->nRow == pMat2->nRow) && (pMat1->nCol == pMat2->nCol)) 
  48. for(int i=0; i<pMat1->nRow; ++i) 
  49. for(int j=0; j<pMat1->nCol; ++j) 
  50. *(pMat3->pData + i * pMat3->nCol + j) = *(pMat1->pData + i * pMat1->nCol + j) - *(pMat2->pData + i * pMat1->nCol + j); 
  51. return OK;  
  52. else 
  53. printf("Not Sub!/n"); 
  54. return NG; 
  55.  
  56.  
  57. /* Matrix clear */ 
  58. void MATClear(MAT* pMat) 
  59. for(int i=0; i<pMat->nRow; ++i) 
  60. for(int j=0; j<pMat->nCol; ++j) 
  61. *(pMat->pData + i * pMat->nCol + j)=0; 
  62.  
  63. /* Matrix multiplication C function */ 
  64. void MATMulC (MAT* pMat, int C) 
  65. for(int i=0; i<pMat->nRow; ++i) 
  66. for(int j=0; j<pMat->nCol; ++j) 
  67. *(pMat->pData + i * pMat->nCol + j) = C * (*(pMat->pData + i * pMat->nCol + j) ); 
  68.  
  69. /* Matrix multiplication function */ 
  70. int MATMul (const MAT* pMat1, const MAT* pMat2, MAT* pMat3) 
  71. MATAlloc(pMat3, pMat1->nRow, pMat2->nCol); 
  72. if(pMat1->nCol == pMat2->nRow) 
  73. for(int i=0; i<pMat1->nRow; ++i) 
  74. for(int j=0; j<pMat2->nCol; ++j) 
  75. for(int k=0; k<pMat1->nCol; ++k) 
  76. *(pMat3->pData + i * pMat2->nCol+j) += *(pMat1->pData + i * pMat2->nRow + k) * (*(pMat2->pData + k * pMat2->nCol + j) ); 
  77. return OK;  
  78. else 
  79. printf("not Mul/n"); 
  80. return NG; 
  81. /* Matrix transpose function */ 
  82. int MATTransport(const MAT* pMat1, MAT* pMat2) 
  83. MATAlloc(pMat2, pMat1->nCol, pMat1->nRow); 
  84. for(int i=0; i<pMat1->nRow; ++i) 
  85. for(int j=0; j<pMat1->nCol; ++j) 
  86. *(pMat2->pData + j * pMat1->nRow + i) = *(pMat1->pData + i * pMat1->nCol + j); 
  87. return OK; 
  88. /* 
  89. bool Check_digit(char *kk) 
  90. { 
  91. int a = strlen(kk); 
  92. for(int i = 0; i<a; ++i) 
  93. { 
  94. if( ( (int) (*(kk + i) ) > 48) && ( (int) (*(kk + i) ) < 57 || (int) (*(kk + i) ) == 32) ) 
  95. { 
  96. return 1; 
  97. } 
  98. } 
  99. return 0; 
  100. } 
  101.  
  102. */ 
  103.  
  104. /* Matrix initialization */ 
  105. void MATinit(MAT *pMat) 
  106. bool kos=1; 
  107. int nRow = 0, nCol = 0; 
  108. printf("Please input the number of rows: "); 
  109. scanf_s("%d",&nRow); 
  110. putchar('/n'); 
  111. printf("Please input the number of columns: "); 
  112. scanf_s("%d",&nCol); 
  113. putchar('/n'); 
  114. printf("Please input %dX%d Matrix:/n",nRow,nCol); 
  115. kos=MATAlloc(pMat,nRow,nCol); 
  116. for(int i=0; i<nRow; ++i) 
  117. for(int j=0; j<nCol; ++j) 
  118. scanf("%d", pMat->pData + i*nCol + j); 
  119. /*char arr[100][100]={0}; 
  120. for(int i=0; i<nRow; ++i) 
  121. { 
  122. for(int j=0; j<nCol; ++j) 
  123. { 
  124. scanf("%c", &arr[i][j]); 
  125. kos = Check_digit(&arr[i][j]); 
  126. } 
  127. } 
  128. //ks= atoi(arr[0]); 
  129. while(kos) 
  130. { 
  131. printf(" input is error,Please input again!"); 
  132. for(int i=0; i<nRow; ++i) 
  133. { 
  134. for(int j=0; j<nCol; ++j) 
  135. { 
  136. scanf("%c", arr[i]); 
  137. } 
  138. } 
  139. kos = Check_digit(arr[0]); 
  140. //ks= atoi(arr[0]); 
  141. } 
  142. for(int i=0; i<nRow; ++i) 
  143. { 
  144. for(int j=0; j<nCol; ++j) 
  145. { 
  146. *(pMat->pData + i*nCol + j) = atoi(&arr[i][j]); 
  147. } 
  148. } 
  149.  
  150. } 
  151. */ 
  152.  
  153. /* Output matrix */ 
  154. void Print(MAT *pMat) 
  155. printf("The result is:/n"); 
  156. for(int i = 0; i < pMat->nRow; ++i) 
  157. for(int j=0; j<pMat->nCol; ++j) 
  158. printf("%d ",*( pMat->pData + i * pMat->nCol + j) ); 
  159. putchar('/n'); 
  160.  
  161. int _tmain(int argc, _TCHAR* argv[]) 
  162. int nRow = 1,nCol = 1,sign = 1,C = 1,work = 1,sigal=0; 
  163. MAT Mat, Mat1, Mat2; 
  164. MAT *pMat = &Mat; 
  165. MAT *pMat1 = &Mat1; 
  166. MAT *pMat2 = &Mat2; 
  167. while(work) 
  168. system("cls"); 
  169. printf(" Welcome To The Matrix Operation system! /n"); 
  170. printf("------------------------------------------------/n"); 
  171. printf("1: Open The Generating matrix function!/n"); 
  172. printf("2: Open The Release matrix function!/n"); 
  173. printf("3: Open The Import matrix function!/n"); 
  174. printf("4: Open The Add matrix function!/n"); 
  175. printf("5: Open The Matrix subtraction function!/n"); 
  176. printf("6: Open The Clear matrix function!/n"); 
  177. printf("7: Open The Matrix multiplication C function!/n"); 
  178. printf("8: Open The Matrix multiplication function!/n"); 
  179. printf("9: Open The Matrix transpose function!/n"); 
  180. printf("------------------------------------------------/n"); 
  181. printf("Please Select operation type:"); 
  182. scanf("%d",&sign); 
  183. switch(sign) 
  184. case 1: 
  185. MATinit(pMat); 
  186. Print(pMat); 
  187. break
  188. case 2: 
  189. MATinit(pMat); 
  190. Print(pMat); 
  191. MATFree(pMat); 
  192. break
  193. case 3: 
  194.  
  195. MATinit(pMat2); 
  196. MATAssign (pMat1, pMat2); 
  197. Print(pMat1); 
  198. break
  199. case 4: 
  200. MATinit(pMat1); 
  201. MATinit(pMat2); 
  202. sigal = MATAdd(pMat1, pMat2,pMat); 
  203. if(0 == sigal) 
  204. Print(pMat); 
  205. break
  206. case 5: 
  207. MATinit(pMat1); 
  208. MATinit(pMat2); 
  209. sigal = MATSub(pMat1, pMat2,pMat); 
  210. if(0 == sigal) 
  211. Print(pMat); 
  212. break
  213. case 6: 
  214. MATinit(pMat); 
  215. Print(pMat); 
  216. MATClear(pMat); 
  217. Print(pMat); 
  218. break
  219. case 7: 
  220. printf("Please input the number of C: "); 
  221. scanf("%d",&C); 
  222. putchar('/n'); 
  223. MATinit(pMat); 
  224. MATMulC (pMat, C); 
  225. Print(pMat); 
  226. break
  227. case 8: 
  228. MATinit(pMat1); 
  229. MATinit(pMat2); 
  230. sigal = MATMul (pMat1, pMat2, pMat); 
  231. if(0 == sigal) 
  232. Print(pMat); 
  233. break
  234. case 9: 
  235. MATinit(pMat1); 
  236. MATTransport(pMat1, pMat2); 
  237. Print(pMat2); 
  238. break
  239. default: printf("input is error!"); 
  240. printf("Whether exit the Matrix calculation system?(1 is not exit,0 is exit)/n"); //whether exit the system. 
  241. scanf("%d", &work); 
  242. fflush(stdin); 
  243. while (work != 0 && work != 1) //work must is 1 or 0. 
  244. printf(" Input is error,Please input again!/n"); 
  245. scanf("%d", &work); 
  246. fflush(stdin); 
  247. printf("/n-------------Thanks For You Using The Matrix Calculation System !--------------/n"); 
  248. Sleep(2000); //deley some times. 
  249. return 0; 

以上就是實現二維動態數組指針做矩陣運算的代碼,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91日本在线观看| 国产日产欧美a一级在线| 亚洲男人天堂2019| 亚洲一区二区三区sesese| 成人黄色免费在线观看| 国产亚洲免费的视频看| 亚洲一区二区三区xxx视频| 日韩在线视频免费观看高清中文| 中文字幕欧美精品日韩中文字幕| 777午夜精品福利在线观看| 欧美性色视频在线| 欧美精品videosex极品1| 久久亚洲私人国产精品va| 欧美老女人性视频| 亚洲综合在线播放| 91深夜福利视频| 久久99久国产精品黄毛片入口| 亚洲欧美另类人妖| 日本亚洲欧洲色α| 久久精品免费播放| 国产亚洲aⅴaaaaaa毛片| 中文字幕在线精品| 亚洲精品一区二区在线| 91精品久久久久久久久青青| 亚洲一级黄色片| 欧美在线观看一区二区三区| 久久久久久国产免费| 日韩一二三在线视频播| 亚洲精品久久久久久久久久久久久| 日韩欧美精品网站| 日韩欧美亚洲成人| 68精品国产免费久久久久久婷婷| 91在线中文字幕| 亚洲欧洲午夜一线一品| 欧美人在线观看| 欧美精品一本久久男人的天堂| 亚洲精品国产精品自产a区红杏吧| 久久精视频免费在线久久完整在线看| 久久久噜久噜久久综合| 日韩在线观看免费av| 国产一区二区三区在线看| 日韩天堂在线视频| 日本aⅴ大伊香蕉精品视频| 日本欧美精品在线| 欧美日韩美女在线| 久久久久这里只有精品| 成人黄色在线播放| 亚洲伦理中文字幕| 日本国产高清不卡| 欧美综合国产精品久久丁香| 亚洲午夜未满十八勿入免费观看全集| 成人激情视频小说免费下载| 亚洲成人网久久久| 日韩欧美高清视频| 日本中文字幕成人| 成人情趣片在线观看免费| 欧美激情xxxx性bbbb| 欧美激情在线狂野欧美精品| 国产精品视频久久久久| 九九精品视频在线| 成人久久精品视频| 亚洲第一福利网| 精品高清美女精品国产区| 国产欧美韩国高清| 国产a级全部精品| 欧美成人午夜激情视频| 日本精品久久久| 国产一区二区三区欧美| 97免费中文视频在线观看| 自拍偷拍亚洲区| 欧美成人久久久| 8x海外华人永久免费日韩内陆视频| 亚洲人成网7777777国产| 少妇激情综合网| 亚洲人在线视频| 国产精国产精品| 18性欧美xxxⅹ性满足| 久久久精品国产一区二区| 久久久精品久久久| 九九热这里只有在线精品视| 久久久av亚洲男天堂| 欧美另类69精品久久久久9999| 亚洲成av人乱码色午夜| 亚洲精品国产精品久久清纯直播| 欧美在线视频免费观看| 欧美激情一区二区三区在线视频观看| 一区二区三区无码高清视频| 国产精品91久久| 国产精品视频成人| 欧美成人精品h版在线观看| 欧美极品美女电影一区| 久久久久女教师免费一区| 国产精品久久久久久久电影| 欧美性理论片在线观看片免费| 九九精品在线观看| 欧美电影在线免费观看网站| 中文.日本.精品| 久国内精品在线| 日韩av毛片网| 精品中文字幕乱| 日韩黄色av网站| 色青青草原桃花久久综合| 久久久久久久久久久国产| 久久精品人人做人人爽| 欧美国产日韩精品| 成人免费视频xnxx.com| 91久久精品美女高潮| 亚洲欧洲一区二区三区在线观看| 欧美激情在线狂野欧美精品| 韩国精品美女www爽爽爽视频| 亚洲欧美国产精品| 国外色69视频在线观看| 久久久久久久久亚洲| 亚洲免费中文字幕| 国产91久久婷婷一区二区| 亚洲欧美日韩中文在线制服| 日韩在线视频观看正片免费网站| 久久久精品一区二区三区| 91网在线免费观看| 国产日韩欧美另类| 亚洲第一精品电影| 国产精品电影一区| 欧美日产国产成人免费图片| 欧美性一区二区三区| 日韩国产欧美精品一区二区三区| 日日噜噜噜夜夜爽亚洲精品| 亚洲男人天堂2019| 91香蕉嫩草神马影院在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲影视中文字幕| 欧美激情亚洲精品| 疯狂欧美牲乱大交777| 久久久这里只有精品视频| 亚洲精品456在线播放狼人| 中文国产成人精品久久一| 国产亚洲精品美女久久久久| 亚洲男人天堂久| 91久久久精品| 在线观看日韩欧美| 亚洲深夜福利在线| 久久久久国产一区二区三区| 国语自产精品视频在免费| 成人激情视频网| 精品国偷自产在线| 97福利一区二区| 亚洲欧美一区二区精品久久久| 国产日韩亚洲欧美| www亚洲欧美| 久久福利视频导航| 欧美日韩亚洲视频| 国内免费久久久久久久久久久| 久久国产精品久久国产精品| 国产伦精品一区二区三区精品视频| …久久精品99久久香蕉国产| 欧美性视频网站| 精品爽片免费看久久| 国产免费一区二区三区香蕉精| 亚洲精品一区二区三区婷婷月| 7m第一福利500精品视频| 欧美乱妇高清无乱码| 欧美精品在线极品| 日韩精品视频在线观看网址| 日韩av网站大全| 国产精品日韩精品|