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

Đề tài: Tính hạng của một ma trận trong lập trình C

  1. #1
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mặc định Tính hạng của một ma trận trong lập trình C

    Hôm trước abcde có gủi cho mình đoạn code sau. Nhưng không biết liên lạc lại với abcde như thế nào ? ( Vì cậu gởi mail thông qua 4rum mà lại không đưa địa chỉ ) Với lại thấy bài này cũng hay hay nên tớ đưa lên cho mọi người thảo luận có gì thì học hỏi ?

    1) tính hạng của ma trận vuông:
    C Code:
    1.       for(i=0;i<n;i++)
    2.           for(j=0;j<m;j++)
    3.           {  
    4.              printf("%d%d",i,j);
    5.              scanf("%d",a[i][j]);
    6.            }
    7.            while(k!=0)
    8.            {
    9.                  k<n;
    10.                  i==j;
    11.                  a[i][j]=a[i][i];
    12.                  a[i][j]=a[j][j];
    13.                  k++;
    14.            }
    15.            printf("hang cua ma tran la:%d",d);
    16.            getch();

    Ở phía trên mình đã khai báo biến và nhập số dòng ,
    số cột đầy đủ.

    Bây giờ mình có ý kiến như sau . Tinh thần thì theo đoạn code trên hạng của ma trận luôn luôn bằng một giá trị của biến "d" mặc dù trong code cậu chẳng khai báo d chỗ nào . Và dùng ở đâu . Thứ hai nữa là trong đoạn while tớ thật sự không hiểu cậu viết hàm while đó để làm gì tự nhiên kiểm tra i có trùng j hay không rồi gán rất lộn xộn .

    Để giải bài này cậu hãy đưa cái giải thuật mà cậu muốn làm thì anh em sẽ dựa trên đó để giúp đỡ cho cậu .

    Tiếp nữa là bài đổi hệ số thì cậu dựa vào bài đổi sang cơ số 2 để làm bài đổi sang 16 . Cố lên nhé . Sau nữa là nhắn tin qua yahoo vì tớ không thích đọc bài qua mail ok ! Hoặc có gì thì cứ viết lên 4 rum anh em sẽ giúp tận tình .

    CHúc cậu sớm thành công !

  2. #2
    Ngày gia nhập
    05 2007
    Bài viết
    4

    uh, hình như chỉ đúng với ma trận tam giác , chéo thì phải. thuat toán mình là:
    Khai báo 1 biến đếm, cho 1 vòng lặp, chạy từ 1-->n, điều kiện là i=j, nếu gap a[i][j] và a[i][j]!=0 thì tăng biến đếm lên 1, thế thôi. Tức là mình đang làm công việc đếm số phần tử khác 0 trên đường chéo chính

  3. #3
    Ngày gia nhập
    12 2009
    Nơi ở
    internet 2/2010
    Bài viết
    2

    sưu tầm đó
    C Code:
    1. #include <iomanip.h>
    2. #include <conio.h>
    3. #include <stdio.h>
    4. void main()
    5. {
    6.    int i,j,k,t,n,m,hang;
    7.    float a[10][10],temp,luu;
    8.    clrscr();
    9.    cout <<"\nBan muon tinh hang ma tran cap n*m (1<=n,m<=10)";
    10.    do{
    11.       printf("\nHay nhap n=");
    12.       scanf("%d",&n);
    13.    }while(n>10||n<1);
    14.    do{
    15.       printf("\nHay nhap m=");
    16.       scanf("%d",&m);
    17.    }while(m>10||m<1);
    18.    //Nhap ma tran
    19.    printf("\nNhap vao cac he so cua ma tran[%d x %d]:\n",n,m);
    20.    for(i=0;i<n;i++){
    21.       for(j=0;j<m;j++){
    22.          printf("a[%d][%d]=",i+1,j+1);
    23.          scanf("%f",&a[i][j]);
    24.       }
    25.       printf("\n");
    26.    }
    27.    clrscr();
    28.    //In ra ma tran vua nhap vao
    29.    printf("\n Ma tran vua nhap vao la:\n\n");
    30.    for(i=0;i<n;i++){
    31.       for(j=0;j<m;j++){
    32.      printf("%3.2f\t",a[i][j]);
    33.       }
    34.       printf("\n");
    35.    }
    36.    i=0;j=0;
    37.    while(i<n&&j<m){
    38.       if(a[i][j]==0){
    39.      for(t=i+1;t<n;t++)
    40.         if(a[t][j]!=0){
    41.            for(k=i;k<m;k++){
    42.           temp=a[t][k];
    43.           a[t][k]=a[i][k];
    44.           a[i][k]=temp;
    45.            }
    46.            break;
    47.         }
    48.      if(t==n)j++;
    49.       }
    50.       if(a[i][j]!=0){
    51.      for(t=i+1;t<n;t++)
    52.         if(a[t][j]!=0){
    53.            luu=a[t][j];
    54.            for(k=j;k<m;k++)
    55.           a[t][k]=a[t][k]-a[i][k]*luu/a[i][j];
    56.         }
    57.      i++;j++;
    58.       }
    59.    }
    60.    printf("\nViet lai ma tran vua nhap vao :\n\n");
    61.    for(i=0;i<n;i++){
    62.       for(j=0;j<m;j++){
    63.      printf("%3.2f\t",a[i][j]);
    64.       }
    65.       printf("\n");
    66.    }
    67.    hang=n;
    68.    for(i=0;i<n;i++){
    69.       for(j=0;j<m;j++)
    70.      if(a[i][j]!=0)break;
    71.       if(j==m)hang--;
    72.    }
    73.    printf("\nHang cua ma tran la:%d",hang);
    74.    getch();  
    75. }

  4. #4
    Ngày gia nhập
    01 2012
    Bài viết
    2

    Mình test thử, nó chạy không đúng bạn ơi.

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

  1. [Hỏi] Cách nhân 2 ma trận với các phần tử của ma trận đợc để trong mảng 1 chiều.
    Gửi bởi code_c trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 23-09-2012, 10:24 PM
  2. Mảng trên C++ Tính TBC các phần tử của M.Trận B từ các số cho trước trong M.trận A
    Gửi bởi ngoc_le_iu_iu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 13-03-2012, 06:22 AM
  3. Làm thế nào để xác định vị trí của ma trận đơn vị trong ma trận a
    Gửi bởi haiictu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 10-11-2011, 10:57 AM
  4. Viết hàm con trả về nhiều giá trị trong ma trận?
    Gửi bởi tuan_uct trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 03-05-2011, 11:11 AM
  5. Biến trả lấy giá trị trả về trong Stored Procedure
    Gửi bởi iamonlining trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 6
    Bài viết cuối: 16-12-2009, 05:24 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