Advertisement
khanhnevn

Untitled

May 4th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.21 KB | None | 0 0
  1. /*
  2. 1/ Nhập mảng
  3. 2/ Xuất mảng
  4. 3/ Tìm kiếm một phần tử trong mảng
  5. 4/ Kiểm tra tính chất của mảng
  6. 5/ Tách mảng / Gộp mảng
  7. 6/ Tìm giá trị nhỏ nhất/lớn nhất của mảng
  8. 7/ Sắp xếp mảng giảm dần/tăng dần
  9. 8/ Thêm/Xóa/Sửa một phần tử vào mảng
  10. */
  11.  
  12. #include <stdio.h>
  13. #include <conio.h>
  14. #define MAX 100
  15.  
  16. int i;
  17.  
  18. //Nhap mang
  19. void input(int a[], int n)
  20. {
  21.     // Vong lap nhap mang
  22.     for(i = 0; i < n; i++)
  23.     {
  24.         printf("\nNhap vao phan tu a[%d]: ", i+1); scanf("%d", &a[i]); // nhap mang
  25.     }
  26. }
  27.  
  28. // Xuat mang
  29. void output(int a[], int n)
  30. {
  31.     // Vong lap xuat mang
  32.     for(i = 0; i < n; i++)
  33.         printf("%3d", a[i]);
  34.     printf("\n");
  35. }
  36.  
  37. // Ham tim kiem một phần tử trong mảng
  38. bool timkiem(int a[], int n, int &x)
  39. {
  40.     // Vòng lặp tìm kiếm
  41.     for(i = 0; i < n; i++)
  42.     {
  43.         if (a[i] == x) // Nếu có một phần tử trong mảng bằng với x thì trả về true sau đó thoát ra khỏi hàm
  44.             return true;
  45.     }
  46.     return false;// Ngược lại thì trả về false và kết thúc hàm
  47. }
  48.  
  49.  
  50. // Hàm kiểm tra tính chất của mảng
  51. bool kiemtra(int a[], int n)
  52. {
  53.     // Vòng lặp kiểm tra tính chất
  54.     for(i = 0; i < n; i++)
  55.     {
  56.         if (a[i] < 0) // Nếu chỉ có một phần từ trong mảng < 0 thì trả về false và kết thúc hàm
  57.             return false;
  58.     }
  59.     return true; // Ngược lại trả về true và kết thúc hàm
  60. }
  61.  
  62. // Hàm tách mảng cac phần tử âm
  63. void TachMang(int a[], int n, int temp[], int &ntemp)
  64. {
  65.     ntemp = 0; // Đầu tiên phải cho ntemp = 0 vì nếu không thì nó sẽ nhận giá trị rác
  66.     // Vòng lặp tách mảng
  67.     for(i = 0; i < n; i++)
  68.         if(a[i] < 0) // kiểm tra xem phần từ có < 0
  69.             temp[ntemp++] = a[i];
  70.             /*************************\     Giải thích: Phải có mảng temp vì chúng ta phải tách mảng a ra sang 1 mảng khác
  71.             /*  Tương đương như code:*\                   Sau đó cho ntemp tăng lên 1 tương ứng với phần tử a[i]       
  72.             /*  temp[ntemp] = a[i];  *\              
  73.             /*  ntemp++;             *\     Ví dụ:     Cho a[i] = 1, 2, -3, -4, 5 <=> phần tử từ 0, 1, 2, 3, 4
  74.             /*************************\                Vì vậy cũng như temp[ntemp++] nó cũng sẽ tăng ntemp lên một phần tử nếu nhận được giá trị đó   đúng ở điều kiện
  75.                                                        Cho nên ntemp sẽ nhận giá trị -3 và -4 để lưu vào mảng với phần tử là 0, 1*/
  76. }
  77.  
  78. int main()
  79. {
  80.     int a[MAX], n, x, temp[MAX], ntemp;
  81.     bool check, kt;
  82.     do{
  83.         printf("\nNhap vao so luong phan tu: "); scanf("%d", &n);
  84.  
  85.         if(n < 0 || n > MAX)
  86.             printf("\nBan da nhap sai xin hay nhap lai!");
  87.     } while(n < 0 || n > MAX);
  88.  
  89.     input(a, n);
  90.     output(a, n);
  91.  
  92.     printf("\nNhap vao phan tu muon tim kiem: "); scanf("%d", &x);
  93.     check = timkiem(a, n, x);
  94.     if(check == true)
  95.         printf("\nCo phan tu %d trong mang", x);
  96.     else
  97.         printf("\nKhong co phan tu %d trong mang", x);
  98.  
  99.     kt = kiemtra(a, n);
  100.     if(kt == false)
  101.         printf("\n\nDay la mang am\n");
  102.     else
  103.         printf("\n\nDay la mang duong\n");
  104.  
  105.     printf("Mang a sau khi tach la: \n");
  106.     TachMang(a, n, temp, ntemp);
  107.     output(temp, ntemp);
  108.  
  109.     /*for(i = 0; i < ntemp; i++)
  110.             printf("%3d", temp[i]);*/
  111.     return 0;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement