Quick actions

cmd+k|ctrl+k

Navigation

Languages

lab3 task2

Snippet info

Language

C

Visibility

public

Author

t.m.kozynets

Created

2025-05-06T22:22:42.582531Z

Updated

2025-05-06T22:22:42.582531Z

#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;
}
INFO