#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#define MAX 100
// Перевірений ввід цілого числа
int ввестиЦілеЧисло() {
int значення;
char перевірка;
while (scanf("%d%c", &значення, &перевірка) != 2 || перевірка != '\n') {
printf("Некоректне введення. Введіть ціле число: ");
while (getchar() != '\n'); // очищення буфера
}
return значення;
}
// Введення масиву з клавіатури з перевіркою
void ввестиЗКлавіатури(int масив[], int n) {
for (int i = 0; i < n; i++) {
printf("Елемент [%d]: ", i);
масив[i] = ввестиЦілеЧисло();
}
}
// Випадкове заповнення
void згенеруватиМасив(int масив[], int n) {
srand(time(NULL));
for (int i = 0; i < n; i++) {
масив[i] = rand() % 101 - 50; // від -50 до 50
}
}
// Обчислення суми між першим і останнім додатніми
int сумаМіжДодатніми(int масив[], int n) {
int перший = -1, останній = -1;
for (int i = 0; i < n; i++) {
if (масив[i] > 0) {
перший = i;
break;
}
}
for (int i = n - 1; i >= 0; i--) {
if (масив[i] > 0) {
останній = i;
break;
}
}
if (перший == -1 || останній == -1 || перший >= останній) {
return 0;
}
int сума = 0;
for (int i = перший + 1; i < останній; i++) {
сума += масив[i];
}
return сума;
}
// Вивід масиву
void вивестиМасив(int масив[], int n) {
printf("Масив: ");
for (int i = 0; i < n; i++) {
printf("%d ", масив[i]);
}
printf("\n");
}
int main() {
int масив[MAX];
int n, вибір;
// Введення кількості елементів з перевіркою
do {
printf("Введіть кількість елементів масиву (1–100): ");
n = ввестиЦілеЧисло();
if (n < 1 || n > MAX) {
printf("Число має бути в межах від 1 до 100.\n");
}
} while (n < 1 || n > MAX);
// Вибір способу заповнення
do {
printf("Оберіть спосіб заповнення масиву:\n");
printf("1 — введення з клавіатури\n");
printf("2 — випадкові числа\n");
printf("Ваш вибір: ");
вибір = ввестиЦілеЧисло();
if (вибір != 1 && вибір != 2) {
printf("Невірний вибір. Спробуйте ще раз.\n");
}
} while (вибір != 1 && вибір != 2);
if (вибір == 1) {
ввестиЗКлавіатури(масив, n);
} else {
згенеруватиМасив(масив, n);
}
вивестиМасив(масив, n);
int результат = сумаМіжДодатніми(масив, n);
printf("Сума елементів між першим та останнім додатними: %d\n", результат);
return 0;
}