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

Đề tài: code xử lý ma trận 2 chiều! giúp sửa code

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    1

    Thumbs down code xử lý ma trận 2 chiều! giúp sửa code

    Mình mới học lập trình và mình có viết 1 chương trình sau, nhưng nó không chạy được. Bạn nào hiểu vấn đề thì giúp mình solve với nhe! Làm ơn giải thích hộ mình với. CÁM ƠN nhiều nhiều!

    Code:
    #include <iostream.h>
    
    struct DAYSO
     { 
      int n;
      int ds[5][5];
     };
    
     void nhap (DAYSO x)
     {
      cout<<"\nNhap vao cap ma tran : "; cin>>x.n;
      for (int i=0;i<x.n;i++)
      { for (int j=0;j<n.x;j++)
        { cout<<"\nA["<<i<<"]["<<j<<"]= "; cin>>x.ds[i][j];
        }
       cout<<endl;}
     }
    
    void xuat (DAYSO x)
     {
      for (int i=0;i<n.x;i++)
       {for (int j=0;j<n.x;j++)
        cout<<x.ds[i][j]<<"\t";
        cout<<endl;}
     }
    
    void cheochinh (DAYSO x)
    {
      cout<<"\nDuong cheo chinh:\n";
        for (int i=0;i<x.n;i++)
         cout<<"\t"<<x.ds[i][i];
      cout<<"\nDuong cheo phu: \n";
        for (i=0;i<x.n;i++)
         cout<<"\t"<<x.ds[i][x.n-1-i];
    }
    
    long tong (DAYSO x)
    {
     long tong = 0;
     cout<<"\nTinh Tong Cac Phan tu Chan cua ma tran:\n";
      for (int i=0;i<x.n;i++)
       for (int j=0;j<x.n;i++)
        if(x.ds[i][j]%2==0)
        tong+=x.ds[i][j];
      return tong;
     }
    
    double tich (DAYSO x)
    {
       double tich=1;
       cout<<"\nTinh Tich cac phan tu le cua ma tran:\n";
       for (int i=0;i<x.n;i++)
        for (int j=0;j<x.n;i++)
         if(x.ds[i][j]%2!=0)
          tich*=x.ds[i][j];
       return tich;
    }
    
    int dem (DAYSO x)
    {
      int count=0;
      cout<<"\nDem co bao nhieu so chan:\n";
       for (int i=0;i<x.n;i++)
        for (int j=0;j<x.n;i++)
        if(x.ds[i][j]%2==0)
         count+=1;
       return count;
    }
    
    void timkiem(DAYSO x)
    {
     int a,h,k;
     cout<<"\nTim so trong ma tran:\nNhap so can tim n=";
     cin>>a;
       for (int i=0;i<x.n;i++)
        for (int j=0;j<x.n;i++)
         if (x.ds[i][j]==a)
          { h=i; k=j; break;}
       if(i!=x.n-1)
        {
         cout<<"Tim thay "<<a<<" co trong ma tran\n";
         cout<<"vi tri: X["<<h<<"]["<<k<<"]\n";
        }
    }
    
    void maxmin(DAYSO x)
    {
     int min, max;
     cout<<"\nTim gia tri lon nhat, nho nhat trong ma tran:\n";
       for (int i=0;i<x.n;i++)
        for (int j=0;j<x.n;i++)
         {
          if (min>x.ds[i][j])
           min=x.ds[i][j];
          if (max<x.ds[i][j])
           max=x.ds[i][j];
         }
     cout<<"\nMax = "<<max<<"\nMin = "<<min;
    }
    
    void sapxepdong (DAYSO &x)
    {
        int a,t,pos,min;
        cout<<"\nNhap dong so:";cin>>a;
    
        for (int i=0;i<x.n;i++)
          for (int j=i;j<x.n;j++)
           {
            pos=i;
    	if (min < x.ds[a][j])
    	 pos=j;
    	t=x.ds[a][j];
    	x.ds[a][j]=x.ds[a][pos];
    	x.ds[a][pos]=t;
           }
    }
    
    void sapxepcot (DAYSO &x)
    {
     int a,t,pos,min;
     cout<<"\nNhap cot so:";cin>>a;
     for  (int i=0;i<x.n;i++)
      for ( int j=i;j<x.n;j++)
       {
        pos = i;
        if (min<x.ds[j][a])
         pos=j;
        t=x.ds[j][a];
        x.ds[j][a]=x.ds[pos][a];
        x.ds[pos][a]=t;
       }
    }
    
    void main()
    {
      DAYSO *x;
      int a=0,t;
     cout<<"\nTHUAT TOAN TREN MANG 2 CHIEU\n";
     do {
      cout<<"\n\nChon 1 trong cac ung dung sau:\n";
      cout<<"1. Nhap ma tran\n"
          <<"2. Xuat ma tran\n"
          <<"3. Duong cheo chinh, duong cheo phu\n"
          <<"4. Tinh Tich, Tong\n"
          <<"5. Dem so\n"
          <<"6. Tim Kiem phan tu\n"
          <<"7. Tim max, min\n"
          <<"8. Sap xep theo dong\n"
          <<"9. Sap xep theo cot\n"
          <<"0. Thoat!\n";
       cout<<"\nBan chon: ";cin>>t;
       switch (t)
       {
         case 1: nhap(x);
                 a=1;
    	     break;
         case 2: if (a==0)
         		{cout<<"\nBan phai chon 1 truoc";
                 break;} else
    	     xuat(x);
    	     break;
         case 3: if (a==0)
                  {cout<<"\nBan phai chon 1 truoc";
    	      break;} else
    	     cheochinh(x);
    	     break;
         case 4: if (a==0)
    		{cout<<"\nBan phai chon 1 truoc";
    	     break; } else
    	     cout<<"\nTong = "<<tong;
    	     cout<<"\nTich = "<<tich;
    	     break;
         case 5: if (a==0)
    	       {  cout<<"\nBan phai chon 1 truoc";
    	     break;} else
    	     dem(x);
    	     break;
         case 6: if (a==0)
    	       {	cout<<"\nBan phai chon 1 truoc";
    	      break; } else 
    	      timkiem(x);
    	      break;
         case 7: if (a==0)
    		{cout<<"\nBan phai chon 1 truoc";
    	     break;} else 
    	     maxmin(x);
    	     break;
         case 8: if (a==0)
    	       {	cout<<"\nBan phai chon 1 truoc";
    	     break;} else
    	     sapxepdong(x);xuat(x);
    	     break;
         case 9: if (a==0)
    		{cout<<"\nBan phai chon 1 truoc";
    	     break;} else
    	     sapxepcot(x);xuat(x);
    	     break;
         default: cout<<"KET THUC!";
        }
        cout<<"\nBan co muon tiep tuc?(1/0)";
        cin>>t;
        }
      while (t!=0);
      cout<<"KET THUC!";
    }
    (~v^)s uperworm711--->-->-->-->

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình sửa giùm bạn lỗi biên dịch rồi đó :

    C++ Code:
    1. #include <iostream.h>
    2.  
    3. struct DAYSO
    4. {
    5.     int n;
    6.     int ds[5][5];
    7. };
    8.  
    9. void nhap (DAYSO *x)
    10. {
    11.     cout<<"\nNhap vao cap ma tran : "; cin>>x->n;
    12.     for (int i=0;i<x->n;i++)
    13.     {
    14.         for (int j=0;j<x->n;j++)
    15.         {
    16.             cout<<"\nA["<<i<<"]["<<j<<"]= "; cin>>x->ds[i][j];
    17.         }
    18.  
    19.         cout<<endl;
    20.     }
    21. }
    22.  
    23. void xuat (DAYSO x)
    24. {
    25.     for (int i=0;i<x.n;i++)
    26.     {
    27.         for (int j=0;j<x.n;j++)
    28.             cout<<x.ds[i][j]<<"\t";
    29.         cout<<endl;
    30.     }
    31. }
    32.  
    33. void cheochinh (DAYSO x)
    34. {
    35.     cout<<"\nDuong cheo chinh:\n";
    36.    
    37.     for (int i=0;i<x.n;i++)
    38.         cout<<"\t"<<x.ds[i][i];
    39.    
    40.     cout<<"\nDuong cheo phu: \n";
    41.    
    42.     for (i=0;i<x.n;i++)
    43.         cout<<"\t"<<x.ds[i][x.n-1-i];
    44. }
    45.  
    46. long tong (DAYSO x)
    47. {
    48.     long tong = 0;
    49.  
    50.     cout<<"\nTinh Tong Cac Phan tu Chan cua ma tran:\n";
    51.     for (int i=0;i<x.n;i++)
    52.         for (int j=0;j<x.n;i++)
    53.             if(x.ds[i][j]%2==0)
    54.                 tong+=x.ds[i][j];
    55.     return tong;
    56. }
    57.  
    58. double tich (DAYSO x)
    59. {
    60.     double tich = 1;
    61.     cout<<"\nTinh Tich cac phan tu le cua ma tran:\n";
    62.     for (int i=0;i<x.n;i++)
    63.         for (int j=0;j<x.n;i++)
    64.             if(x.ds[i][j]%2!=0)
    65.                 tich *= x.ds[i][j];
    66.    return tich;
    67. }
    68.  
    69. int dem (DAYSO x)
    70. {
    71.     int count=0;
    72.     cout<<"\nDem co bao nhieu so chan:\n";
    73.     for (int i=0;i<x.n;i++)
    74.         for (int j=0;j<x.n;i++)
    75.             if(x.ds[i][j]%2==0)
    76.                 count+=1;
    77.     return count;
    78. }
    79.  
    80. void timkiem(DAYSO x)
    81. {
    82.     int a,h,k;
    83.    
    84.     cout<<"\nTim so trong ma tran:\nNhap so can tim n=";
    85.     cin>>a;
    86.     for (int i=0;i<x.n;i++)
    87.         for (int j=0;j<x.n;i++)
    88.             if (x.ds[i][j]==a)
    89.             {
    90.                 h=i;
    91.                 k=j;
    92.                 break;
    93.             }
    94.    
    95.     if(i != x.n-1)
    96.     {
    97.         cout<<"Tim thay "<<a<<" co trong ma tran\n";
    98.         cout<<"vi tri: X["<<h<<"]["<<k<<"]\n";
    99.     }
    100. }
    101.  
    102. void maxmin(DAYSO x)
    103. {
    104.     int min, max;
    105.     cout<<"\nTim gia tri lon nhat, nho nhat trong ma tran:\n";
    106.     for (int i=0;i<x.n;i++)
    107.     for (int j=0;j<x.n;i++)
    108.     {
    109.         if (min>x.ds[i][j])
    110.             min=x.ds[i][j];
    111.        
    112.         if (max<x.ds[i][j])
    113.             max=x.ds[i][j];
    114.     }
    115.    
    116.     cout<<"\nMax = "<<max<<"\nMin = "<<min;
    117. }
    118.  
    119. void sapxepdong (DAYSO &x)
    120. {
    121.     int a,t,pos,min;
    122.     cout<<"\nNhap dong so:";
    123.     cin>>a;
    124.  
    125.     for (int i=0;i<x.n;i++)
    126.         for (int j=i;j<x.n;j++)
    127.         {
    128.             pos=i;
    129.             if (min < x.ds[a][j])
    130.                 pos=j;
    131.            
    132.             t=x.ds[a][j];
    133.             x.ds[a][j]=x.ds[a][pos];
    134.             x.ds[a][pos]=t;
    135.         }
    136. }
    137.  
    138. void sapxepcot (DAYSO &x)
    139. {
    140.     int a,t,pos,min;
    141.     cout<<"\nNhap cot so:";cin>>a;
    142.     for  (int i=0;i<x.n;i++)
    143.         for ( int j=i;j<x.n;j++)
    144.         {
    145.             pos = i;
    146.             if (min<x.ds[j][a])
    147.                 pos=j;
    148.             t=x.ds[j][a];
    149.             x.ds[j][a]=x.ds[pos][a];
    150.             x.ds[pos][a]=t;
    151.         }
    152. }
    153.  
    154. void main()
    155. {
    156.     DAYSO x;
    157.     int a=0,t;
    158.    
    159.     cout<<"\nTHUAT TOAN TREN MANG 2 CHIEU\n";
    160.     do {
    161.         cout<<"\n\nChon 1 trong cac ung dung sau:\n";
    162.         cout<<"1. Nhap ma tran\n"
    163.             <<"2. Xuat ma tran\n"
    164.             <<"3. Duong cheo chinh, duong cheo phu\n"
    165.             <<"4. Tinh Tich, Tong\n"
    166.             <<"5. Dem so\n"
    167.             <<"6. Tim Kiem phan tu\n"
    168.             <<"7. Tim max, min\n"
    169.             <<"8. Sap xep theo dong\n"
    170.             <<"9. Sap xep theo cot\n"
    171.             <<"0. Thoat!\n";
    172.         cout<<"\nBan chon: ";cin>>t;
    173.         switch (t)
    174.         {  
    175.             case 1:
    176.                 nhap(&x);
    177.                 a=1;
    178.                 break;
    179.             case 2:
    180.                 if (a==0)
    181.                 {
    182.                     cout<<"\nBan phai chon 1 truoc";
    183.                     break;
    184.                 }
    185.                 else
    186.                     xuat(x);
    187.                 break;
    188.             case 3:
    189.                 if (a==0)
    190.                 {
    191.                     cout<<"\nBan phai chon 1 truoc";
    192.                     break;
    193.                 }
    194.                 else
    195.                     cheochinh(x);
    196.                 break;
    197.             case 4:
    198.                 if (a==0)
    199.                 {
    200.                     cout<<"\nBan phai chon 1 truoc";
    201.                     break;
    202.                 }
    203.                 else
    204.                     cout<<"\nTong = "<<tong;
    205.                 cout<<"\nTich = "<<tich;
    206.                 break;
    207.  
    208.             case 5:
    209.                 if (a==0)
    210.                 {
    211.                     cout<<"\nBan phai chon 1 truoc";
    212.                     break;
    213.                 }
    214.                 else
    215.                     dem(x);
    216.                 break;
    217.            
    218.             case 6:
    219.                 if (a==0)
    220.                 {
    221.                     cout<<"\nBan phai chon 1 truoc";
    222.                     break;
    223.                 }
    224.                 else
    225.                     timkiem(x);
    226.                 break;
    227.            
    228.             case 7:
    229.                 if (a==0)
    230.                 {
    231.                     cout<<"\nBan phai chon 1 truoc";
    232.                     break;
    233.                 }
    234.                 else
    235.                     maxmin(x);
    236.                 break;
    237.            
    238.             case 8:
    239.                 if (a==0)
    240.                 {
    241.                     cout<<"\nBan phai chon 1 truoc";
    242.                     break;
    243.                 }
    244.                 else
    245.                     sapxepdong(x);xuat(x);
    246.                 break;
    247.             case 9:
    248.                 if (a==0)
    249.                 {
    250.                     cout<<"\nBan phai chon 1 truoc";
    251.                     break;
    252.                 }
    253.                 else
    254.                     sapxepcot(x);xuat(x);
    255.                 break;
    256.             default: cout<<"KET THUC!";
    257.         }
    258.  
    259.         cout<<"\nBan co muon tiep tuc?(1/0)";
    260.         cin>>t;
    261.     }
    262.     while (t!=0);
    263.     cout<<"KET THUC!";
    264. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

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

    Cám ơn bạn đã giúp đỡ mình!
    Nhưng mà nó chỉ xuất ra được thôi, còn tính toán mấy cái hàm ở dưới thì .... bị lỗi rồi. Bạn giúp mình được không!?
    (~v^)s uperworm711--->-->-->-->

  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    C Code:
    1. long tong (DAYSO x)
    2. {
    3.     long tong = 0;
    4.  
    5.     cout<<"\nTinh Tong Cac Phan tu Chan cua ma tran:\n";
    6.     for (int i=0;i<x.n;i++)
    7.         for (int j=0;j<x.n;i++)  //////// j++
    8.             if(x.ds[i][j]%2==0)
    9.                 tong+=x.ds[i][j];
    10.     return tong;
    11. }
    Vẫn lỗi như vậy. Sai dây truyền xuống phần tích, phần đếm, phần tìm kiếm, phần max min.

    Bạn tham khảo cách trình bày code của mèo con nữa nhé.

    Còn phần sắp xếp, bạn nói chi tiết hơn về đề đc k, để xem có yêu cầu thuật toán gì, chứ nếu không thì như này là đc.
    C Code:
    1. void sapxepdong (DAYSO &x)
    2. {
    3.     int a;
    4.     cout<<"\nNhap dong so:";
    5.     cin>>a;
    6.  
    7.     for (int i=0;i<x.n-1;i++)
    8.         for (int j=i;j<x.n;j++)
    9.             if (x.ds[a][i] < x.ds[a][j])          //Max -> min
    10.             {
    11.                 t=x.ds[a][j];
    12.                 x.ds[a][j]=x.ds[a][i];
    13.                 x.ds[a][i]=t;
    14.             }
    15. }
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 25-02-2009 lúc 01:36 PM.

  5. #5
    Ngày gia nhập
    09 2008
    Bài viết
    1

    HI, cám ơn bạn.
    Tại mình .... copy 2 cái vòng lặp for lồng nhau cho nên sai nguyên dãy. Còn phần sắp xếp tức là nhập vào số dòng cần sắp xếp và xếp chúng theo thứ tự từ nhỏ đến lớn.
    (~v^)s uperworm711--->-->-->-->

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

  1. Code kiểm tra xem số đó có chia hết cho 2 và các bài tập căn bản. Giúp mình kiểm tra code?
    Gửi bởi JaKunKa trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 19
    Bài viết cuối: 05-12-2014, 07:48 PM
  2. cần giúp code mảng 1 chiều
    Gửi bởi thaohoangf trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 29-10-2012, 09:53 PM
  3. Đồ họa trên C++ Nhờ giúp đỡ về đoạn code vẽ đồ thị sinx với khoảng chia n
    Gửi bởi hoangaka2k8 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 19-03-2012, 10:38 PM
  4. xóa phần tử là số chính phương trong mảng 1 chiều. Xem giúp code của mình với?
    Gửi bởi loveboom3012 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 5
    Bài viết cuối: 23-08-2011, 07:07 PM
  5. Giúp sửa lỗi code sắp xếp mảng 1 chiều bằng mảng con trỏ!
    Gửi bởi longthanbt trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 06-07-2010, 04:40 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