Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: nhân 2 ma trận, chạy bị lỗi Null pointer assignment?

  1. #1
    Ngày gia nhập
    02 2012
    Bài viết
    3

    Mặc định nhân 2 ma trận, chạy bị lỗi Null pointer assignment?

    Code bài C của mình:

    #include<stdio.h>
    #include<conio.h>
    #include<alloc.h>
    void nhap_mt(float *a,int m,int n)
    { int i,j;
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    { printf("Nhap vao phan tu dong %d, cot %d: ",i+1,j+1);
    scanf("%f",a+i*n+j);
    }
    }
    void in_mt(float *a,int m,int n)
    { int i,j;
    for(i=0;i<m;i++)
    { for(j=0;j<n;j++)
    printf("%f ",*(a+i*n+j));
    printf("\n"); }
    }
    void nhan_mt(float *a,float *b,float *c,int m,int n)
    { int i,j,k,g,h;
    float t;
    for(i=0;i<m;i++)
    for(j=0;j<m;j++)
    { *(c+i*n+j)=0;
    for (k=0;k<n;k++)
    { *(c+i*n+j)+=(*(a+i*n+k))*(*(b+k*n+j));
    } }
    }
    void main()
    {
    float *a,*b,*c;
    int m,n,p,q;
    a=(float*)malloc(m*n*sizeof(float));
    b=(float*)malloc(m*n*sizeof(float));
    c=(float*)malloc(m*n*sizeof(float));
    printf("Nhap vao so hang so,so cot cua ma tran 1: ");
    scanf("%d%d",&m,&n);
    nhap_mt(a,m,n);
    in_mt(a,m,n);
    printf("\nNhap vao so hang so,so cot cua ma tran 2: ");
    scanf("%d%d",&p,&q);
    nhap_mt(b,p,q);
    in_mt(b,p,q);
    nhan_mt(a,b,c,m,n);
    in_mt(c,m,q);
    getch();
    }

    Mình chạy bằng Turbo C 3.0 cứ bị lỗi Null Pointer Assignment, mọi người xem giúp với

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    a=(float*)malloc(m*n*sizeof(float));
    b=(float*)malloc(m*n*sizeof(float));
    c=(float*)malloc(m*n*sizeof(float));

    Bị lỗi chỗ này. mn chưa có , lấy gì mà malloc
    Xử lý: Chuyển xuống đặt phía dưới chỗ đã nhập mn vào rồi
    malloc mấy cái ma trận b , c lại cho đàng hoàng. Ko phải thích malloc gì là malloc đâu
    Đã được chỉnh sửa lần cuối bởi clchicken : 18-02-2012 lúc 10:12 PM.
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    02 2012
    Bài viết
    3

    uk nhỉ tks bạn, bây giờ ko bị lỗi đấy nữa rùi, nhưng sao chương trình chạy các ma trận vuông thi đúng mà nhan 2 ma trận bất kì thi sai vậy, Code mình sửa:

    #include<stdio.h>
    #include<conio.h>
    #include<alloc.h>
    void nhap_mt(float *a,int m,int n)
    { int i,j;
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    { printf("Nhap vao phan tu dong %d, cot %d: ",i+1,j+1);
    scanf("%f",a+i*n+j);
    }
    }
    void in_mt(float *a,int m,int n)
    { int i,j;
    for(i=0;i<m;i++)
    { for(j=0;j<n;j++)
    printf("%f ",*(a+i*n+j));
    printf("\n"); }
    }
    void nhan_mt(float *a,float *b,float *c,int m,int n,int t)
    { int i,j,k;
    for(i=0;i<m;i++)
    for(j=0;j<t;j++)
    { *(c+i*m+j)=0;
    for (k=0;k<n;k++)
    *(c+i*m+j)+=(*(a+i*m+k))*(*(b+k*n+j));
    }
    }
    void main()
    {
    float *a,*b,*c;
    int m,n,p,q;
    printf("Nhap vao so hang so,so cot cua ma tran 1: ");
    scanf("%d%d",&m,&n);
    a=(float*)malloc(m*n*sizeof(float));
    c=(float*)malloc(m*n*sizeof(float));
    nhap_mt(a,m,n);
    in_mt(a,m,n);
    printf("\nNhap vao so hang so,so cot cua ma tran 2: ");
    scanf("%d%d",&p,&q);
    b=(float*)malloc(p*q*sizeof(float));
    nhap_mt(b,p,q);
    in_mt(b,p,q);
    c=(float*)malloc(m*q*sizeof(float));
    nhan_mt(a,b,c,m,n,q);
    in_mt(c,m,q);
    getch();
    }

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Thế đã kiểm tra điều kiện nhân ma trận chưa ?
    m,n x p,q thì n phải = p mới nhân được.
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    02 2012
    Bài viết
    3

    co mà, mình toàn thử 2 ma tran nhân được 2x3 va 3x2, đặt đk thì dễ rùi nhưng thử 2x3 với 3x2 nó sai,chắc tại cái hàm nhân, hj t mới sửa đc rùi, tks bạn nhé,mình ko biết cai Null pointer, hjhj

Các đề tài tương tự

  1. Viết lại một số hàm cơ bản về xâu ký tự lỗi Null pointer assignment?
    Gửi bởi khucnam trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 13-09-2011, 09:12 AM
  2. Tại sao phát trinh lỗi "Null pointer assignment" và cách khác phục.
    Gửi bởi nguoirung1.6 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 24-04-2011, 12:36 AM
  3. Lỗi khi giá trị trả về là null?
    Gửi bởi npq_a11 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 09-11-2010, 06:50 PM
  4. Trong lúc xuất ma trận bị lỗi null pointer assignment
    Gửi bởi tquang620 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 17-06-2009, 09:04 AM
  5. lỗi Null pointer assignmemt
    Gửi bởi phthinh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 02-06-2008, 10:14 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn