回答受付が終了しました

最近プログラミングを学び始めた女子大生です。さっぱりわからない問題があるので教えてほしいです。

回答(1件)

0

「関数を使って」か…。 #include <stdio.h> #include <stdlib.h> void getXT(int **x, int **xt, int m, int n); void calcXTX(int **x, int **xt, int **xtx, int m, int n); void dispX(int **x, int m, int n); int main(void){     int m, n;     int **x, **xt, **xtx;     int i, j, k;     printf("m: ");     scanf("%d", &m);     printf("n: ");     scanf("%d", &n);          x = (int**)malloc(sizeof(int*) * m);     for(i = 0; i < m; i++){         x[i] = (int*)malloc(sizeof(int) * n);     }     xt = (int**)malloc(sizeof(int*) * n);     xtx = (int**)malloc(sizeof(int*) * n);     for(i = 0; i < n; i++){         xt[i] = (int*)malloc(sizeof(int) * m);         xtx[i] = (int*)malloc(sizeof(int) * n);     }     for(i = 0; i < m; i++){         for(j = 0; j < n; j++){             printf("x[%d][%d] = ", i, j);             scanf("%d", &x[i][j]);         }     }     getXT(x, xt, m, n);     calcXTX(x, xt, xtx, m, n);     printf("\nX\n");     dispX(x, m, n);     printf("\nXT\n");     dispX(xt, n, m);     printf("\nXT X\n");     dispX(xtx, n, n);     return 0; } void getXT(int **x, int **xt, int m, int n){     int i, j;     for(i = 0; i < m; i++){         for(j = 0; j < n; j++){             xt[j][i] = x[i][j];         }     } } void calcXTX(int **x, int **xt, int **xtx, int m, int n){     int i, j, k;     for(i = 0; i < n; i++){         for(j = 0; j < n; j++){             xtx[i][j] = 0;             for(k = 0; k < m; k++){                 xtx[i][j] += xt[i][k] * x[k][j];             }         }     } } void dispX(int **x, int m, int n){     int i, j;     for(i = 0; i < m; i++){         for(j = 0; j < n; j++){             printf("%d ", x[i][j]);         }         printf("\n");     } } ー 実行結果 ー m: 2 n: 3 x[0][0] = 1 x[0][1] = 2 x[0][2] = 3 x[1][0] = 2 x[1][1] = 3 x[1][2] = 4 X 1 2 3 2 3 4 XT 1 2 2 3 3 4 XT X 5 8 11 8 13 18 11 18 25