Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 1. Viết một chương trình cho phép user nhập vào tới 20 số nguyên (integers).
- 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.
- 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 đó
- Yêu cầu: dùng mảng các số nguyên để xử lý kết quả.
- */
- #include <stdio.h>
- #include <conio.h>
- /*******************************************************************************
- * Definitions
- ******************************************************************************/
- #define MAX_NUM 20
- /*******************************************************************************
- * Prototypes
- ******************************************************************************/
- void enterData(int *arr, int size);
- void show(int arr[], int size);
- float findAverage(int arr[], int size);
- int babyNumber(int arr[], int size, float ave);
- void swap(int *arr, int size);
- /*******************************************************************************
- * Variables
- ******************************************************************************/
- /*******************************************************************************
- * Code
- ******************************************************************************/
- int main() {
- int arr[MAX_NUM];
- int size = 5;
- float ave;
- enterData(&arr, size);
- show(arr, size);
- ave = findAverage(arr, size);
- printf("average = %f\n", ave);
- printf("Numbers are smaller than average = %d\n", babyNumber(arr, size, ave));
- swap(&arr, size);
- show(arr, size);
- _getch();
- return 0;
- }
- /*!
- * @brief <hàm nhập dữ liệu vào mảng>
- *
- * @param *arr <mảng lưu giá trị>.
- * @param size <kích thước mảng>.
- *
- * @return <NULL>.
- */
- void enterData(int *arr, int size) {
- int i;
- int data;
- for (i = 0; i < size; i++) {
- printf("enter value of element %d :\t", i);
- scanf_s("%d", &data);
- *arr = data;
- arr++;
- }
- }
- /*!
- * @brief <hiển thị giá trị các phần tử trong mảng>
- *
- * @param arr[] <mảng các giá trị>.
- * @param size <kích thước mảng>.
- *
- * @return <NULL>.
- */
- void show(int arr[], int size) {
- int i;
- for (i = 0; i < size; i++) {
- printf("%d \t", arr[i]);
- }
- printf("\n");
- }
- /*!
- * @brief <tìm số trung bình>
- *
- * @param arr[] <mảng các giá trị>.
- * @param size <kích thước mảng>.
- *
- * @return <giá trị trung bình>.
- */
- float findAverage(int arr[], int size) {
- int i;
- int sum = 0;
- float ave;
- for (i = 0; i < size; i++) {
- sum += arr[i];
- }
- ave = (float)sum / size;
- return ave;
- }
- /*!
- * @brief <tìm số phần tử có giá trị nhỏ hơn giá trị trung bình>
- *
- * @param arr[] <mảng các giá trị>.
- * @param size <kích thước mảng>.
- * @param ave <giá trị trung bình>.
- *
- * @return <số lượng các phần tử có giá trị nhỏ hơn tb>.
- */
- int babyNumber(int arr[], int size, float ave) {
- int i;
- int count = 0;
- for (i = 0; i < size; i++) {
- if (arr[i] < ave) count++;
- }
- return count;
- }
- /*!
- * @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>
- *
- * @param *arr <mảng các giá trị>.
- * @param size <kích thước mảng>.
- *
- * @return <NULL>.
- */
- void swap(int *arr, int size) {
- int flag = 0; /*gắn cờ cho phần tử đầu tiên*/
- int i = 1; /*duyệt từ phần tử thứ 2*/
- while(i < size && flag < size) {
- if (*(arr + i) % 2 == 1) { /*nếu là số lẻ thì đổi chỗ cho phần tử được gắn cờ flag*/
- int temp = *(arr + flag);
- *(arr + flag) = *(arr + i);
- *(arr + i) = temp;
- flag ++;
- continue;
- }
- i++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement