/**
* @file main.cpp
* @autor Коваленко І. В. 515б
* @date 20.03.2023
* @brief Лабораторна робота №3, варіант 11
*
* Використання масивів. Завдання 2
*/
/*
Розробити функцію для обчислення суми елементів масиву, що знаходяться після
мінімального елемента. Кількість елементів масиву n задається
користувачем (максимальна кількість – 100). Передбачити можливість
введення елементів масиву як з клавіатури, так і з використанням функції
rand(). Розробити програму, що демонструє використання розроблених
функцій.
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include "Module.h"
int main(void) {
//утворення ключів
setlocale(LC_ALL, "ukr");
srand(time(NULL));
//створення змінних
int arr[MAX_SIZE] = { 0 };
char choise;
int size_of_mas = size_of_massive();
//утворення інфо панель для користувача
printf("Введіть тип заповнення масиву.\n================================================\nf - заповнення користувачем\nr - заповнення рандомними числами від -50 до 50\n================================================\n");
do {
choise = getchar();
if (choise != 'f' && choise != 'r')
printf("Ошибка.\nВведіть тип заповнення масиву.\n================================================\nf - заповнення користувачем\nr - заповнення рандомними числами від -50 до 50\n================================================\n");
} while (choise != 'f' && choise != 'r');
//вибір заповнення та заповнення масиву
choise_of_array_filling(choise, arr, size_of_mas);
//виведення масиву
display(arr, size_of_mas);
//виведення суми чисел
printf("\nСумма елементів після мінімального елементу: %i\n", find_min(arr, size_of_mas));
printf("Завершення програми.");
}
#define MAX_SIZE 100
#define PRIVATE static
#define PUBLIC
#define ERROR 0
#define CORRECT 1
int size_of_massive();
int choise_of_array_filling(char choise, int arr[], int size);
void display(int arr[], int size);
int find_min(int arr[], int size);
#include <stdio.h>
#include <stdlib.h>
#include "Module.h"
//перевірка чар
PRIVATE int clean_stdin() {
while (getchar() != '\n');
return 1;
}
//перевірка корректності данних
PUBLIC int size_of_massive() {
int size_of_mas;
char c;
do {
do {
printf("Введіть розмір масиву: ");
} while ((((scanf("%d%c", &size_of_mas, &c) != 2 || c != '\n') && clean_stdin())));
} while ((size_of_mas < 0 || size_of_mas > 100));
return size_of_mas;
}
//заповнення масиву
PUBLIC int choise_of_array_filling(char choise, int arr[], int size) {
int num;
if (choise == 'f') {
for (int i = 0; i < size; i++) {
scanf("%i", &num);
arr[i] = num;
}
}
else if (choise == 'r') {
for (int i = 0; i < size; i++) {
num = rand() % 100 - 50;
arr[i] = num;
}
}
else { return ERROR; }
return CORRECT;
}
//виведення масиву
PUBLIC void display(int arr[], int size) {
printf("Ваш масив:\n\t===================================\n\n\t");
for (int i = 0; i < size; i++) {
printf("%i\t", arr[i]);
if (!((i + 1) % 5))
printf("\n\t");
}
printf("\n\t===================================\n");
}
//знаходження та сумма після мінімального елементу
PUBLIC int find_min(int arr[], int size) {
int min = arr[0];
int min_index = 0;
int sum = 0;
for (int i = 1; i < size; i++) {
if (min > arr[i]){
min_index = i;
min = arr[i];
}
}
for (int i = min_index + 1; i < size; i++) {
sum += arr[i];
}
return sum;
}