Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    xuất kết quả sai khi nhân hai ma trận

    Nhờ các bạn giúp đỡ mình mới học c

    Mã:
                    int const max=20;        int a[max][max],b[max][max],c[max][max],n,m,p;        do        {            printf("Nhap m: ");scanf("%d",&m);            printf("Nhap n: ");scanf("%d",&n);        } while (n<1||n>max);        printf("
    Ma tran A co %d  dong, %d cot",m,n);        printf("
    ");        for (int i = 0; i < m; i++)            for (int j = 0; j < n; j++)            {                printf("A[%d][%d]",i,j);scanf("%d",&a[i][j]);            }            //in            for (int i = 0; i < m; i++)            {                printf("
    ");                for (int j = 0; j < n; j++)                {                    printf("%4d\t",a[i][j]);                }            }            //            // ma tran B            //            printf("
    ");            do            {                printf("Nhap p:");scanf("%d",&p);            } while (p<1||p>max);            printf("
    Ma tran B co %d  dong, %d cot",n,p);            printf("
    ");            for (int i = 0; i <n; i++)            for (int j = 0; j < p; j++)            {                printf("B[%d][%d]",i,j);scanf("%d",&b[i][j]);            }            //in            for (int i = 0; i <n; i++)            {                printf("
    ");                for (int j = 0; j < p; j++)                {                    printf("%4d\t",b[i][j]);                }            }            /han hai ma tran            for (int i = 0; i < m; i++)            for (int j = 0; j < p; j++)                for (int k = 0; k < n; k++)                {                        c[i][j]=0;                        c[i][j]= c[i][j]+a[i][k]*b[k][j];                }                               //            printf("
    Ma tran xuat ra la:");            for (int i = 0; i < m; i++)            {                printf("
    ");                for (int j = 0; j < p; j++)                {                    printf("%4d\t",c[i][j]);                }            }            system("pause");

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn sai ở vòng lặp này nè
    Mã:
    /han hai ma tran
                for (int i = 0; i < m; i++)
                for (int j = 0; j < p; j++)
                	
                    for (int k = 0; k < n; k++)
                    {
                            c[i][j]=0;
                            c[i][j]= c[i][j]+a[i][k]*b[k][j];
                    }
    theo bạn viết thì mỗi một lần k tang len 1 thì c[i][j] được khởi tạo lại = 0. dẫn đến kết quả sai.bạn nên đưa khởi tạo ra ngoài vòng for(k...).

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cảm ơn bạn nha, mình sửa được rồi.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •