#include<stdio.h> #include<stdlib.h> #define col 3 #define line 3 int* multiplication_matrix(int, int); void print_din_matrix(int **a ,int ,int ); int** alloc_matrix(int , int ); void main() { int matrixA={0}, matrixB={0}, i, j, s=0, *p_matrixSUM; s=col*line; printf("enter %d numbers for matrixA\n",s); *\\המשתמש מכניס מטריצה מספר 1 \\* for(i=0;i<col;i++) for(j=0;j<line;j++) scanf("%d",&matrixA);
printf("enter %d numbers for matrixB\n",s); *\\המשתמש מכניס מטריצה מספר 2 \\* for(i=0;i<col;i++) for(j=0;j<line;j++) scanf("%d",&matrixB); p_matrixSUM = multiplication_matrix(matrixA, matrixB); print_din_matrix(p_matrixSUM, line ,col); } int* multiplication_matrix(int matrixA,int matrixB) *\\הפוקנציה מקבלת 2 כתובות של המטריצות שהגיעו מן המשתמש ומטרתה להכפיל אותן זו בזו ולהחזיר כתובת של המטריצה החדשה\\* { int *matrixSUM, i, j; matrixSUM=alloc_matrix(line,col); *\\יצירת מטריצה חדשה דו מימדית דינאמית \\* for(i=0;i<col;i++) for(j=0;j<line;j++) matrixSUM=(matrixA*matrixB)+(matrixA*matrixB)+(matrixA*matrixB); for(i=0;i<col;i++) { for(j=0;j<line;j++) printf("%2d", matrixSUM); printf("\n"); } return matrixSUM; } void print_din_matrix(int **a, int line, int col) *\\הפוקנציה מקבלת 3פרמטרים (גודל שורה, גודל עמודה, כתובת תחילת המטריצה) ומדפיסה את המטריצה שקיבלה\\* { int i,j; for(i=0;i<line;i++) { for(j=0;j<col;j++) printf("%8d",a); printf("\n"); } } int** alloc_matrix(int line,int col) *\\הפוקנציה מקבלת 2 פרמטרים של גודל שורה וגודל עמודה ויוצרת לפי זה מערך דו מימדי חדש\\* { int **c, i; c = (int **)calloc(line, sizeof(int *)); if (!c) return NULL; for (i=0; i<line; i++) { c = (int *)calloc(col, sizeof(int)); if (!c) { free_matrix (c,i); return NULL; } } return c; }
|