Advertisement
thienlang

Mảng Một Chiều

Jan 13th, 2014
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.45 KB | None | 0 0
  1. //ARRAY
  2. //Lâm Hữu Thiện
  3. //ngày 13/01/2013.
  4. #include <stdio.h>
  5. #include <conio.h>
  6. #include <Windows.h>
  7. #define MAX 100
  8. //Prototype
  9. void NhapMang( int a[], int &n);
  10. void XuatMang ( int a[], int n);
  11. void ChenPhanTu (int a[], int &n );
  12. void ThemPhanTu( int a[], int &n);
  13. void Swap( int &iNum1, int &iNum2 );
  14. bool tang ( int a, int b);
  15. bool giam ( int a, int b);
  16. void Sort ( int a[], int left, int right, bool (*func) ( int, int ));
  17. //chương trình chính
  18. int main()
  19. {
  20.     int a[MAX], n = 0;
  21.     char key = 0;
  22.     printf("\tNhap mang ban dau:\n");
  23.     NhapMang(a,n);
  24.  
  25.     do
  26.     {
  27.         system("cls");
  28.         printf("\tMang: \n");
  29.         XuatMang(a,n);
  30.         printf("\n\n\t1. Chen Phan Tu");
  31.         printf("\n\t2. Them Phan Tu");
  32.         printf("\n\t3. Sap Xep tang");
  33.         printf("\n\t4. Sap xep giam");
  34.         printf("\n\t0.Ket Thuc");
  35.  
  36.         do
  37.         {
  38.             key = getch();
  39.         }
  40.         while ( key < '0' || key > '4');
  41.  
  42.         switch (key)
  43.         {
  44.         case '1':
  45.             {
  46.                 system("cls");
  47.                 printf("\tChen Phan Tu\n\n");
  48.                 ChenPhanTu(a,n);
  49.                 printf("\n\tKet Qua:\n");
  50.                 XuatMang(a,n);
  51.                 getch();
  52.                 break;
  53.             }
  54.         case '2':
  55.             {
  56.                 system("cls");
  57.                 printf("\tThem Phan Tu\n\n");
  58.                 ThemPhanTu(a,n);
  59.                 printf("\n\tKet Qua:\n");
  60.                 XuatMang(a,n);
  61.                 getch();
  62.                 break;
  63.             }
  64.         case '3':
  65.             {
  66.                 system("cls");
  67.                 printf("\tSap Xep Tang\n\n");
  68.                 Sort(a,0,n,tang);
  69.                 printf("\n\tKet Qua:\n");
  70.                 XuatMang(a,n);
  71.                 getch();
  72.                 break;
  73.             }
  74.         case '4':
  75.             {
  76.                 system("cls");
  77.                 printf("\tSap Xep Giam\n\n");
  78.                 Sort(a,0,n,giam);
  79.                 printf("\n\tKet Qua:\n");
  80.                 XuatMang(a,n);
  81.                 getch();
  82.                 break;
  83.             }
  84.         }
  85.        
  86.     }
  87.     while (key != '0');
  88.     return 0;
  89. }
  90.  
  91.  
  92. //hàm nhập mảng số nguyên
  93. void NhapMang(int a[], int &n )
  94. {
  95.     do
  96.     {
  97.         printf ("\tNhap so luong phan tu: ");
  98.         scanf("%d",&n);
  99.     }
  100.     while ( n > MAX || n < 0 );
  101.     for ( int i = 0; i < n; i++)
  102.     {
  103.         printf ("\tPhan tu thu %d: ", i+1);
  104.         scanf("%d",&a[i]);
  105.     }
  106. }
  107. //hàm xuất mảng số nguyên
  108. void XuatMang( int a[], int n )
  109. {
  110.     printf("\t");
  111.     for ( int i = 0; i < n; i++)
  112.     {
  113.         printf("%d ",a[i]);
  114.     }
  115. }
  116.  
  117. //hàm chèn một phần tử vào mảng số nguyên
  118. //sau khi chèn, tăng kích thước lên 1 đơn vị
  119. void ChenPhanTu (int a[], int &n )
  120. {
  121.     if ( n + 1 > MAX )
  122.     {
  123.         printf("\n\tThieu bo nho, khong chen duoc gia tri");
  124.         return;
  125.     }
  126.     int iViTri = 0;
  127.     int iGiaTri = 0;
  128.     do
  129.     {
  130.         printf("\n\tNhap vi tri can chen [0, %d]: ", n-1);
  131.         scanf("%d", &iViTri);
  132.     }
  133.     while ( iViTri < 0|| iViTri >= n );
  134.     printf("\n\tNhap Gia tri can chen: ");
  135.     scanf("%d", &iGiaTri);
  136.  
  137.     for ( int i = n; i > iViTri; i--)
  138.     {
  139.         a[i] = a[i-1];
  140.     }
  141.     a[iViTri] = iGiaTri;
  142.     n++;
  143. }
  144.  
  145. //Hàm thêm phần tử vào mảng
  146. void ThemPhanTu( int a[], int &n)
  147. {
  148.     int iGiaTri = 0;
  149.     if ( n + 1 > MAX )
  150.     {
  151.         printf("\n\tThieu bo nho, khong chen duoc gia tri");
  152.         return;
  153.     }
  154.     printf("\tNhap Gia tri can them vao: ");
  155.     scanf("%d", &iGiaTri);
  156.  
  157.     a[n] = iGiaTri;
  158.     n++;
  159. }
  160.  
  161. //hàm hoán vị 2 số nguyên
  162. void Swap( int &iNum1, int &iNum2 )
  163. {
  164.     int iTemp= iNum1;
  165.     iNum1 = iNum2;
  166.     iNum2 = iTemp;
  167. }
  168.  
  169. //hàm xác định tăng
  170. bool tang ( int a, int b)
  171. {
  172.     if ( a > b )
  173.         return true;
  174.     return false;
  175. }
  176.  
  177. bool giam ( int a, int b )
  178. {
  179.     if ( a < b )
  180.         return true;
  181.     return false;
  182. }
  183.  
  184. void Sort ( int a[], int left, int right, bool (*func) ( int, int ))
  185. {
  186.     for ( int i = left; i < right; i++)
  187.     {
  188.         for ( int j = i + 1; j < right; j++)
  189.         {
  190.             if (func(a[i],a[j]))
  191.                 Swap(a[i],a[j]);
  192.         }
  193.     }
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement