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

Đề tài: Cần giúp gỡ lỗi trong C

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

    Mặc định Cần giúp gỡ lỗi trong C

    Mình đang làm bài tập nhân 2 ma trận ở đây dùng con trỏ cấp phát động. Dịch chương trình thì ko có lỗi nhưng khi chạy lại ko hiển thị đúng ma trận kết quả. nó toàn hiện ra những số rất lớn khó hiểu.
    có ai giúp mình fix lỗi này với. Cám ơn rất nhiều
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <malloc.h>
    
    #define MAX 10
    
    // nhap vao so hang, so cot cua ma tran
    void nhap_so_nguyen(int *value, int min, int max, char id) 
    {
      do {
        printf("\nNhap gia tri %c (trong khoang %d den %d) ", id, min, max); 
        // id la ki hieu cac kich thuoc cua mang
        scanf("%d", value);
      } while (*value < min || *value > max);
    }
    
    int Tao_ma_tran(int *pt, int row, int col, char id)
    {
         int i, j;
         pt = (int*) malloc (row*col*sizeof(int)); // cap phat vung nho cho mang
         printf("\nNhap ma tran %c:\n", id);
         for (i=0; i<row; i++)
             for (j=0; j<col; j++)
             { 
                   printf("%c[%d][%d]= ", id, i, j);
                   scanf("%d", pt +i*row+j);
             }
    }
    
    // nhan ma tran
    void Nhan_ma_tran(int *A, int *B, int *C, int n, int m, int l)
    {
         int i, j, k;
         for (i=0; i<n; i++)
             for (j=0; j<l; j++)
             {
                 for (k=0; k<m; k++)
                 *(C +i+j) += *(A +i+k) + *(B +k+j);
             }
    }    
     
    void In_ma_tran(int *pt, int row, int col)
    {
         int i, j;
         for (i=0; i<row; i++)
             {
                   for (j=0; j<col; j++)
                   printf("%d ", *(pt +(i*row)+j));
                   printf("\n");
             }
    }
    
    int main()
    {
         int *A, *B, *C, n, m, l, i, j, k;
         nhap_so_nguyen(&n, 2, MAX, 'n'); //n la so hang cua ma tran A
         nhap_so_nguyen(&m, 2, MAX, 'm'); //m la so cot cua ma tran A va la so hang cua mt B
         nhap_so_nguyen(&l, 2, MAX, 'l'); //l la so cot cua ma tran B
         Tao_ma_tran(A, n, m, 'A');
         Tao_ma_tran(B, m, l, 'B');   
         C = (int*) malloc (n*l*sizeof(int)); // cap phat vung nho cho ma tran tich
         Nhan_ma_tran(A, B, C, n, m, l);
         In_ma_tran(A, n, m);
         In_ma_tran(B, m, l);
         In_ma_tran(C, n, l);
         getch();
    }

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

    Bạn chưa nắm vững về truyền tham số/tham trị cho hàm. Để 1 hàm có thể thay đổi 1 con trỏ (ở đây là hàm Tao_ma_tran với 2 con trỏ A, B) thì phải truyền vào con trỏ đến con trỏ (tức là cần truyền int** pt) hoặc tham chiếu đến con trỏ (chỉ với C++ - ở đây cần truyền int*& pt)

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

  1. Hàm trong C Giúp đỡ về đọc FILE trong 1 folder riêng biệt trong lập trình C.
    Gửi bởi itus1994 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 29-12-2013, 09:04 PM
  2. Sự cố Nhờ mod chuyển giúp bài "Sắp xếp số thứ tự ngay trong bảng của 1 database?" từ MySQL sang MSSQL giúp!
    Gửi bởi hu-xeko trong diễn đàn Ý kiến, đề xuất và khiếu nại
    Trả lời: 1
    Bài viết cuối: 12-03-2012, 07:48 PM
  3. Bài tập C++ help giúp em sữa lỗi trong hàm tìm kiếm sách và gọi hàm trong chuơng trình quản lí sách
    Gửi bởi Mr.vu112 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 17-11-2011, 07:21 PM
  4. Bài tập C++ Giúp mình viết 1 đoạn code hoàn chỉnh trong C++ về random trong giới hạn
    Gửi bởi sai211dn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 06-10-2011, 08:01 PM
  5. Hàm trong C++ không nằm trong main vẫn chạy đúng. Giải thích giúp?
    Gửi bởi tuvan1011 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 02-09-2009, 12:58 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