Advertisement
Guest User

Untitled

a guest
Jul 16th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. /*
  2. 1. Viết một chương trình cho phép user nhập vào tới 20 số nguyên (integers).
  3. In ra kết quả gồm số trung bình của các số nhập vào và số lượng số có giá trị nhỏ hơn giá trị trung bình này.
  4. Viết 1 hàm chuyển các giá trị chẵn về bên phải, lẻ về bên trái của mảng đó
  5. Yêu cầu: dùng mảng các số nguyên để xử lý kết quả.
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <conio.h>
  10.  
  11. /*******************************************************************************
  12. * Definitions
  13. ******************************************************************************/
  14. #define MAX_NUM 20
  15.  
  16. /*******************************************************************************
  17. * Prototypes
  18. ******************************************************************************/
  19. void enterData(int *arr, int size);
  20. void show(int arr[], int size);
  21. float findAverage(int arr[], int size);
  22. int babyNumber(int arr[], int size, float ave);
  23. void swap(int *arr, int size);
  24.  
  25. /*******************************************************************************
  26. * Variables
  27. ******************************************************************************/
  28.  
  29. /*******************************************************************************
  30. * Code
  31. ******************************************************************************/
  32. int main() {
  33. int arr[MAX_NUM];
  34. int size = 5;
  35. float ave;
  36. enterData(&arr, size);
  37. show(arr, size);
  38. ave = findAverage(arr, size);
  39. printf("average = %f\n", ave);
  40. printf("Numbers are smaller than average = %d\n", babyNumber(arr, size, ave));
  41. swap(&arr, size);
  42. show(arr, size);
  43.  
  44. _getch();
  45. return 0;
  46. }
  47.  
  48. /*!
  49. * @brief <hàm nhập dữ liệu vào mảng>
  50. *
  51. * @param *arr <mảng lưu giá trị>.
  52. * @param size <kích thước mảng>.
  53. *
  54. * @return <NULL>.
  55. */
  56. void enterData(int *arr, int size) {
  57. int i;
  58. int data;
  59. for (i = 0; i < size; i++) {
  60. printf("enter value of element %d :\t", i);
  61. scanf_s("%d", &data);
  62. *arr = data;
  63. arr++;
  64. }
  65. }
  66.  
  67. /*!
  68. * @brief <hiển thị giá trị các phần tử trong mảng>
  69. *
  70. * @param arr[] <mảng các giá trị>.
  71. * @param size <kích thước mảng>.
  72. *
  73. * @return <NULL>.
  74. */
  75. void show(int arr[], int size) {
  76. int i;
  77. for (i = 0; i < size; i++) {
  78. printf("%d \t", arr[i]);
  79. }
  80. printf("\n");
  81. }
  82.  
  83. /*!
  84. * @brief <tìm số trung bình>
  85. *
  86. * @param arr[] <mảng các giá trị>.
  87. * @param size <kích thước mảng>.
  88. *
  89. * @return <giá trị trung bình>.
  90. */
  91. float findAverage(int arr[], int size) {
  92. int i;
  93. int sum = 0;
  94. float ave;
  95. for (i = 0; i < size; i++) {
  96. sum += arr[i];
  97. }
  98. ave = (float)sum / size;
  99. return ave;
  100. }
  101.  
  102. /*!
  103. * @brief <tìm số phần tử có giá trị nhỏ hơn giá trị trung bình>
  104. *
  105. * @param arr[] <mảng các giá trị>.
  106. * @param size <kích thước mảng>.
  107. * @param ave <giá trị trung bình>.
  108. *
  109. * @return <số lượng các phần tử có giá trị nhỏ hơn tb>.
  110. */
  111. int babyNumber(int arr[], int size, float ave) {
  112. int i;
  113. int count = 0;
  114. for (i = 0; i < size; i++) {
  115. if (arr[i] < ave) count++;
  116. }
  117. return count;
  118. }
  119.  
  120. /*!
  121. * @brief <đổi chỗ phần tử chẵn lẻ trong mảng, chẵn về bên phải, lẻ về bên trái>
  122. *
  123. * @param *arr <mảng các giá trị>.
  124. * @param size <kích thước mảng>.
  125. *
  126. * @return <NULL>.
  127. */
  128. void swap(int *arr, int size) {
  129. int flag = 0; /*gắn cờ cho phần tử đầu tiên*/
  130. int i = 1; /*duyệt từ phần tử thứ 2*/
  131. while(i < size && flag < size) {
  132. if (*(arr + i) % 2 == 1) { /*nếu là số lẻ thì đổi chỗ cho phần tử được gắn cờ flag*/
  133. int temp = *(arr + flag);
  134. *(arr + flag) = *(arr + i);
  135. *(arr + i) = temp;
  136. flag ++;
  137. continue;
  138. }
  139. i++;
  140. }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement