iT邦幫忙

3

C語言短陣相乘的問題

wani 2020-11-06 11:16:491265 瀏覽

您好,
我現在在寫學校作業
但是我寫不出來學校要求的,麻煩您們看這發文看到最後

學校要求的是這樣
我們要把這些數字讀進去
2 3
1 2 3
4 5 6
2 1
1
0
2 3
1 2 3
4 5 6
3 2
1 0
0 1
1 0
然後會讀出來的是這樣子
Invalid calculation!!
4 2
10 5

然後我寫的是這樣
#include <stdio.h>

int main ()

{
int a[10][10],b[10][10],c[10][10];
int i, j, k;

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

for (j = 0; j < 2; j++) {

c[i][j] = 0;

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

c[i][j] += a[i][k] * b[k][j];

}

}

int main(void)

{

int i, j;

int A[2][3];

int B[2][1] ;

int z[2][2];

for (i = 0; i < 2; i++) {

for (j = 0; j < 2; j++)

printf("%3d", z[i][j]);

putchar('\n');

}

void mul(const int ma[2][3], const int mb[3][2], int mc[2][2])

{

int i, j, k;

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

for (j = 0; j < 2; j++) {

mc[i][j] = 0;

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

mc[i][j] += ma[i][k] * mb[k][j];

}

}

return (0);

}

我不知道應該怎麼改,所以可不可以請您們教我怎麼寫嗎
這作業今天要交的
希望有人出現救我

感恩

1 個回答

8
海綿寶寶
iT邦大神 1 級 ‧ 2020-11-06 11:27:09
最佳解答

這個程式去改
加油

下午四點多了
不知道還來得及嗎?

#include <stdio.h>

void getMatrixElements(int matrix[][10], int row, int column) {

   for (int i = 0; i < row; ++i) {
      for (int j = 0; j < column; ++j) {
         scanf("%d", &matrix[i][j]);
      }
   }
}

void multiplyMatrices(int first[][10],
                      int second[][10],
                      int result[][10],
                      int r1, int c1, int r2, int c2) {

   for (int i = 0; i < r1; ++i) {
      for (int j = 0; j < c2; ++j) {
         result[i][j] = 0;
      }
   }

   for (int i = 0; i < r1; ++i) {
      for (int j = 0; j < c2; ++j) {
         for (int k = 0; k < c1; ++k) {
            result[i][j] += first[i][k] * second[k][j];
         }
      }
   }
}

void display(int result[][10], int row, int column) {

   for (int i = 0; i < row; ++i) {
      for (int j = 0; j < column; ++j) {
         printf("%d  ", result[i][j]);
         if (j == column - 1)
            printf("\n");
      }
   }
}

int main() {
   int first[10][10], second[10][10], result[10][10], r1, c1, r2, c2;
   
   while (scanf("%d %d", &r1, &c1) != EOF) {
       getMatrixElements(first, r1, c1);
    
       scanf("%d %d", &r2, &c2);
       getMatrixElements(second, r2, c2);
    
       if (c1 != r2) {
          printf("Invalid calculation!!\n");
       } else {
           multiplyMatrices(first, second, result, r1, c1, r2, c2);
           display(result, r1, c2);
       }
   }

   return 0;
}
看更多先前的回應...收起先前的回應...

我覺得 海綿寶寶 是學生的救星,
還是作業原本就是你出的.

https://ithelp.ithome.com.tw/upload/images/20201106/20050647RojJpfIeeY.png

搞不好他就是學校出題的老師。在這給答案。
然後看到答案一樣就去「當」掉。

我開玩笑的。請不要打我。

你們看見的是學生作業
而在下寫的是家長學費
/images/emoticon/emoticon10.gif

froce iT邦大師 1 級 ‧ 2020-11-06 13:11:25 檢舉

上面的梗圖,我可以補充一個。
JS:A class?Please run it in chrome

fillano iT邦超人 1 級 ‧ 2020-11-07 14:55:27 檢舉

JS: class is nothing but a syntactic sugar for constructor function.

我要發表回答

立即登入回答