谁能发现这段代码中的错误,输出文件没有显示内容

问题描述 投票:0回答:1
#include <stdio.h>
int main()
{
int r1, r2, c1, c2;
printf("Enter number of rows and colums for mat1-");        //matrix1//
scanf("%d %d", &r1, &c1);
int m1[r1][c1];
for (int i = 0; i < r1; i++)
{
    for (int j = 0; j < c1; j++)
    {
        printf("Enter mat1[%d][%d]-", i + 1, j + 1);
        scanf("%d", &m1[i][j]);
    }
}
printf("Enter no of rows columns for mat2-");          //matrix2//
scanf("%d %d", &r2, &c2);
int m2[r2][c2];
for (int i = 0; i < r2; i++)
{
    for (int j = 0; j < c2; j++)
    {
        printf("Enter mat2[%d][%d]-", i + 1, j + 1);
        scanf("%d", &m2[i][j]);
    }
}
int m3[r1][c2];
for (int i = 0; i < r1; i++)    //matrix multiplication//
{
    for (int j = 0; i < c2; j++)
    {
        int sum = 0;
        for (int k = 0; k < r1; k++)
        {
            sum += (m1[i][k] * m2[k][j]);
        }
        m3[i][j] = sum;
    }
    FILE *outputFile = fopen("output.txt", 'w');
    if (outputFile == NULL)
    {
        printf("Error");
        return 1;
    }
    for (int i = 0; i < r1; i++)    /*this part is not working*/
    {
        for (int j = 0; j < c2; j++)
        {
            fprintf(outputFile, "%d", m3[i][j]);
        }
        fprintf(outputFile, "\n");
    }
    fclose(outputFile);
    return 0;
  }
}

抱歉给您带来不便,这是我第一次在 stackoverflow 上提问。 最初的问题是 - 编写一个程序来执行矩阵乘法。矩阵的大小和矩阵的元素是由用户通过控制台输入获得的。将结果矩阵写入文件“output.txt”。

arrays c matrix-multiplication
1个回答
0
投票

您的代码的问题是您在矩阵乘法的第二个 for 循环中存在拼写错误。你写的是 (int j = 0; i < c2; j++) instead of for (int j = 0; j < c2; j++). This causes an infinite loop and prevents the program from writing the result to the file. To fix this, you need to change i to j in the loop condition.

这是更正后的代码:

#include <stdio.h>
int main () {
  int r1, r2, c1, c2;
  printf ("Enter number of rows and colums for mat1-"); //matrix1//[^2^][2]
  scanf ("%d %d", &r1, &c1);
  int m1 [r1] [c1];
  for (int i = 0; i < r1; i++) {
    for (int j = 0; j < c1; j++) {
      printf ("Enter mat1 [%d] [%d]-", i + 1, j + 1);
      scanf ("%d", &m1 [i] [j]);
    }
  }
  printf ("Enter no of rows columns for mat2-"); //matrix2//
  scanf ("%d %d", &r2, &c2);
  int m2 [r2] [c2];
  for (int i = 0; i < r2; i++) {
    for (int j = 0; j < c2; j++) {
      printf ("Enter mat2 [%d] [%d]-", i + 1, j + 1);
      scanf ("%d", &m2 [i] [j]);
    }
  }
  int m3 [r1] [c2];
  for (int i = 0; i < r1; i++) //matrix multiplication//
  {
    for (int j = 0; j < c2; j++) //changed i to j here//
    {
      int sum = 0;
      for (int k = 0; k < r1; k++) {
        sum += (m1 [i] [k] * m2 [k] [j]);
      }
      m3 [i] [j] = sum;
    }
  }
  FILE *outputFile = fopen ("output.txt", "w");
  if (outputFile == NULL) {
    printf ("Error");
    return 1;
  }
  for (int i = 0; i < r1; i++) /*this part is now working*/
  {
    for (int j = 0; j < c2; j++) {
      fprintf (outputFile, "%d", m3 [i] [j]);
    }
    fprintf (outputFile, "\n");
  }
  fclose (outputFile);
  return 0;
}

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.