Ai coi dùm cái bài ni coi C++

Thảo luận trong 'C/C++' bắt đầu bởi hongromeo, 4 Tháng mười 2010.

  1. Offline

    hongromeo

    • Windows 1.0

    Số bài viết:
    15
    Đã được thích:
    13
    Điểm thành tích:
    10
    đề bài thế này: Tính tổng đường chéo chính của ma trận và 2 đường chéo chính khác. còn lại các ptử bằng 0; ma trận có dang này:
    x x x 0 0
    x x x 0 0
    0 x x x 0
    0 0 x x x
    0 0 0 x x
    còn đây là code:

    #include<iostream.h>
    #include<math.h>
    int const max=10;
    void InputMatrix(int a[][max], int n)
    {
    cout<<"\nNhap vao cap cua ma tran = ";
    cin>>n;
    for(int i=0;i<=n;i++){
    for(int j=0;j<=n;j++){
    if(abs(i-j)<=1){
    cout<<"\nNhap phan tu ["<<i<<"]["<<j<<"]=";
    cin>>a[j];
    }
    else a[j]=0;
    }
    }
    }
    void OutMatrix(int a[][max], int n)
    {
    for(int i=0;i<=n;i++){
    cout<<"\n";
    for(int j=0;j<=n;j++){
    cout<<a[j];
    }
    }
    }
    void AddMatrix(int a[][max], int b[][max],int c[][max], int n)
    {
    for(int i=0;i<=0;i++) {
    for(int j=0;j<=0;j++){
    c[j]=a[j]+b[j];
    }

    }
    }
    int main()
    {
    int a[max][max],n;
    int b[max][max],m;
    int c[max][max];

    cout<<"\nNhap ma tran a:";
    InputMatrix(a,n);
    cout<<"\nNhap ma tran b:)";
    InputMatrix(b,m);
    if(n!=m){
    cout<<"2 ma tran khong cong duoc";
    }
    else
    {
    AddMatrix(a,b,c,n);
    cout<<"Ma tran a:\n";
    OutMatrix(a,n);
    cout<<"Ma tran b:\n";
    OutMatrix(b,n);
    cout<<"Xuat ma tran a+b\n";
    OutMatrix(c,n);
    }

    }


    Lỗi thì không có, nhưng sao lại khong hiện ra ma trận và còn một số vô lý. nhưng cha biet sua thế nào. Thấy thuật toán cũng đúng mà. Ai pro thi chỉ giáo dùm zới
  2. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Mã:
    void AddMatrix(int a[][max], int b[][max],int c[][max], int n)
    ma trận c phải là tham truyền để trả về giá trị. thêm dấu & vào đây : int &c[][max]

    hàm này đọc đã thấy lỗi
    Mã:
    void AddMatrix(int a[][max], int b[][max],int c[][max], int n)
    {
    for(int i=0;i<=0;i++) {
    for(int j=0;j<=0;j++){
    c[i][j]=a[i][j]+b[i][j];
    }
    i =0 chạy đến 0:rain:
    ở đây mình không test được, bạn sửa lại thử.
    zphuoocm thích bài này.
  3. Offline

    hongromeo

    • Windows 1.0

    Số bài viết:
    15
    Đã được thích:
    13
    Điểm thành tích:
    10
    uh, cái i=0 là nhầm đó. sửa lại rồi.
    hàm addmatrix thì đc rồi, nhưng nhờ bạn xem lại coi thử cái hàm OutMatrix thử xem. sao nó không xuất ra ma trận dc. Mình thấy hàm đó viết đúng mà....
  4. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    Mã:
    void OutMatrix([B]int a[][max][/B], int n)
    cũng như các hàm khác, bạn chưa truyền số phần tử cho mảng 2 chiều: a[max][max]
    thử xem được không !.
  5. Offline

    LieuKyThien

    • Thành Viên Mới

    Số bài viết:
    79
    Đã được thích:
    49
    Điểm thành tích:
    0
    for(int i=0;i<=n;i++) != for(int i=0;i<n;i++). Ngoài ra không cần dòng này:
    Mã:
    if(n!=m){
    cout<<"2 ma tran khong cong duoc";
    Đàng nào m=n mới tính được tống thế sao ko cho nhập n thôi.
    zphuoocmsunboy thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí