Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 1 trên tổng số 1 kết quả

Đề tài: Code sắp xếp các phần tử trong mảng tăng dần theo đường ziczac chéo

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

    Mặc định Code sắp xếp các phần tử trong mảng tăng dần theo đường ziczac chéo

    Mình mới viết code sắp xếp các phần tử trong mảng tăng dần theo đường ziczac chéo , các bạn cho ý kiến nhé:

    C Code:
    1. #include<stdio.h>
    2. #define spt 10
    3. void NhapMaTran(int a[][spt], int& n)
    4. {
    5.         printf("\nNhap so phan tu: ");
    6.         scanf("%d", &n);
    7.         for(int i=0; i<n; i++)
    8.                 for(int j=0; j<n; j++)
    9.                 {
    10.                         printf("\nNhap phan tu a[%d][%d]=", i, j);
    11.                         scanf("%d", &a[i][j]);
    12.                  }
    13. }
    14. void XuatMaTran(int a[][spt], int n)
    15. {
    16.         for(int i=0; i<n; i++)
    17.         {
    18.                 for(int j=0; j<n; j++)
    19.                         printf("%5d", a[i][j]);
    20.                 printf("\n");
    21.         }
    22.         printf("\n");
    23. }
    24.  
    25. void MaTranSangMang(int a[][spt], int b[], int n)   //ham chuyen ma tran sang mang
    26. {
    27.         int k=0;
    28.         for(int i=0; i<n; i++)
    29.                 for(int j=0; j<n; j++)
    30.                         b[k++]=a[i][j];
    31. }
    32.  
    33. void HoanVi(int& a, int& b)
    34. {
    35.         int temp=a;
    36.         a=b;
    37.         b=temp;
    38. }
    39.  
    40. void BubbleSort(int b[], int n)
    41. {
    42.         for(int i=0; i<n-1; i++)
    43.                 for(int j=n-1; j>=i; j--)
    44.                         if(b[j]<b[i])
    45.                                 HoanVi(b[i], b[j]);
    46. }
    47.  
    48. void SapXepLenXuong1(int a[][spt], int b[], int n)  //ham sap xep ca phan tu huong len
    49. {
    50.         int dong, dong1, cot, k=0;
    51.         for(dong=0; dong<n; dong++) //quet tu dong dau tien toi dong cuoi cung
    52.                 for(dong1=dong; dong1>=0; dong1--)//quet tu dong hien tai nguoc tro len dong dau tien
    53.                         for(cot=0; cot<n; cot++)//quet cac cot
    54.                                 if(dong1+cot==dong)//dieu kien de dien so vao ma tran
    55.                                         a[dong1][cot]=b[k++];
    56.         for(dong=1; dong<n; dong++)//quet tu dong thu 1 den dong cuoi cung
    57.                 for(dong1=n-1; dong1>=dong; dong1--)//quet nguoc tu dong cuoi len dong hien tai
    58.                         for(cot=dong; cot<n; cot++)//quet cac cot
    59.                                 if(dong1+cot==dong+(n-1))//dieu kien de dien so vao ma tran
    60.                                         a[dong1][cot]=b[k++];
    61. }
    62.  
    63. void SapXepLenXuong2(int a[][spt], int b[], int n)
    64. {
    65.         int dong, dong1, cot, k=0;
    66.         for(dong=0; dong<n; dong++)
    67.     {
    68.                 if(dong%2==0)//dieu kien de sap cac cac so theo chieu huong len
    69.                         for(dong1=dong; dong1>=0; dong1--)
    70.                                 for(cot=0; cot<=dong; cot++)
    71.                                         if(dong1+cot==dong)
    72.                                                 a[dong1][cot]=b[k++];
    73.                 if(dong%2==1)//dieu kien de sap cac so theu chieu huong xuong
    74.                         for(dong1=0; dong1<=dong; dong1++)
    75.                                 for(cot=dong; cot>=0; cot--)
    76.                                         if(dong1+cot==dong)
    77.                                                 a[dong1][cot]=b[k++];
    78.         }
    79.         for(dong=1; dong<n; dong++)
    80.         {
    81.                 if((n%2==1&&dong%2==0)||(n%2==0&&dong%2==1))//dieu kien de sap cac so theo chieu huong len
    82.                         for(dong1=n-1; dong1>=dong; dong1--)
    83.                                 for(cot=dong; cot<n; cot++)
    84.                                         if(dong1+cot==dong+(n-1))
    85.                                                 a[dong1][cot]==b[k++];
    86.                 if((n%2==0&&dong%2==0)||(n%2==1&&dong%2==1))//dieu kien de sap cac so theo chieu huong xuong
    87.                         for(dong1=dong; dong1<n; dong1++)
    88.                                 for(cot=n-1; cot>=dong; cot--)
    89.                                         if(dong1+cot==dong+(n-1))
    90.                                                 a[dong1][cot]=b[k++];
    91.         }
    92. }
    93.  
    94. void main()
    95. {
    96.         int a[spt][spt];
    97.         int b[spt*spt];
    98.         int n;
    99.         NhapMaTran(a, n);
    100.         XuatMaTran(a, n);
    101.         MaTranSangMang(a, b, n);
    102.         BubbleSort(b, n*n);
    103.         SapXepLenXuong1(a, b, n);
    104.         XuatMaTran(a, n);
    105.         SapXepLenXuong2(a, b, n);
    106.         XuatMaTran(a, n);
    107. }

    Hổng biết tại sao mà bài nào mình cũng suy nghĩ theo các phức tạp hết, các bạn có thể giúp mình làm cho đoạn code trên ngắn gọn, đơn giản hơn không.

    Đọc Nội quy trước đi, không chịu đọc thì bó tay luôn đó
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 08-04-2008 lúc 12:14 AM. Lý do: Yêu cầu đọc Nội quy để biết cách cho tag code vào tag

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

  1. Trả lời: 0
    Bài viết cuối: 12-05-2012, 05:52 PM
  2. Trả lời: 1
    Bài viết cuối: 18-12-2011, 03:36 PM
  3. Code hoán vị được sắp xếp tăng theo thứ tự từ điển, giúp mình xem xét bài tập này?
    Gửi bởi kegiaumat055 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 07-11-2011, 08:10 PM
  4. Liệt kê các phần tử của ma trận theo thứ tụ tăng dần
    Gửi bởi rong3sao trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 05-04-2009, 07:55 AM
  5. Sắp xếp các phần tữ trên cùng 1 dòng theo thứ tự tăng dần trong mảng 2 chiều
    Gửi bởi muclup trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 07-03-2009, 02:21 AM

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