/*
* @file lab5_2.cpp
* @author Гавалян Д.Є, гр. 515i
* @date 07 травня 2025
* @brief Лабораторна робота № 5, варiант 19
*
* Застосування вказiвникiв.Завдання 2
*/
#include <stdio.h>
#include "module.h"
#include <locale.h>
#include <stdlib.h>
#include <time.h>
/* Функцiя main */
int main() {
setlocale(LC_ALL, "Ukr");
//Введення змiнних
int arr[N];//масив
int n, choice; // елементи, вибiр
printf("Введiть кiлькiсть елементiв (до 50): ");
scanf("%d", &n);
if (n <= 0 || n > N) {
printf("Неправильне значення!\n"); //перевiрка на коректну введену кiлькiсть елементiв
return 1;
}
printf("Оберiть спосiб заповнення масиву:\n");
printf("1 - Ввести вручну\n");
printf("2 - Заповнити випадковими числами\n");
printf("Ваш вибiр: ");
scanf("%d", &choice);
switch (choice)
{
case 1: inputArray(arr, n); //якщо користувач ввiв "1", працює алгоритм введення елементiв з клавiатури
break;
case 2: randomArray(arr, n); //якщо користувач ввiв "2" працює алгоритм генерацiї елементiв за допомогою rand()
break;
default: printf("Такої функцiї не iснує!");
return 0;
}
printf("Масив: ");
printArray(arr, n);
int less, equal, greater;
analyze_array(arr, n, &less, &equal, &greater);
printf("\nАналiз масиву:\n");
printf("Середнє значення: ");
double sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
printf("%.2f\n", sum / n);
printf("Елементiв менше середнього: %d\n", less);
printf("Елементiв дорiвнює середньому: %d\n", equal);
printf("Елементiв бiльше середнього: %d\n", greater);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "module.h"
// Заповнення масиву з клавiатури
void inputArray(int arr[], int n) {
printf("Введiть %d елементiв:\n", n);
for (int i = 0; i < n; i++) {
printf("arr[%d] = ", i);
scanf("%d", &arr[i]);
}
}
// "випадковi" числа
void randomArray(int arr[], int n) {
srand(time(NULL));
for (int i = 0; i < n; i++) {
arr[i] = rand() % 41 - 20; // дiапазон вiд -20 до 20
}
}
// Вивiд масиву
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
void analyze_array(int arr[], int n, int* less, int* equal, int* greater) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
double average = sum / n;
*less = 0;
*equal = 0;
*greater = 0;
for (int i = 0; i < n; i++) {
if (arr[i] < average)
(*less)++;
else if (arr[i] == average)
(*equal)++;
else
(*greater)++;
}
}
#ifndef MODULE_H
#define MODULE_H
#define N 50
/**
* @brief Аналізує масив вiдносно середнього значення.
* @param arr Вказiвник на масив.
* @param size Розмiр масиву.
* @param less Вказiвник для збереження кiлькостi елементiв, менших за середнє.
* @param equal Вказiвник для збереження кiлькостi елементiв, рiвних середньому.
* @param greater Вказiвник для збереження кiлькостi елементiв, бiльших за середнє.
* @note Використовує вказiвникову арифметику (без iндексацiї []).
*/
void analyze_array(int* arr, int size, int* less, int* equal, int* greater);
void inputArray(int arr[], int n);
void randomArray(int arr[], int n);
void printArray(int a[], int n);
#endif