Лабораторна 5 завдання 2

Run Settings
LanguageC
Language Version
Run Command
/** * @file laba5_2.c * @author Нездоймишпка А.О., гр. 515б * @date 27 березня 2024 * @brief Лабораторна робота № 5 * * Застосування вказівників. Завдання 2 */ #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <time.h> #include <locale.h> // Функція для знаходження двох найменших непарних елементів масиву void find_two_smallest_odds(int* array, int size, int* smallest1, int* smallest2) { *smallest1 = INT_MAX; *smallest2 = INT_MAX; int* ptr = array; for (int i = 0; i < size; i++) { if (*ptr % 2 != 0) { if (*ptr < *smallest1) { *smallest2 = *smallest1; *smallest1 = *ptr; } else if (*ptr < *smallest2) { *smallest2 = *ptr; } } ptr++; } // Якщо не знайшли достатньої кількості непарних чисел, встановлюємо значення в 0 if (*smallest1 == INT_MAX) *smallest1 = 0; if (*smallest2 == INT_MAX) *smallest2 = 0; } // Функція для введення масиву користувачем int input_array(int* array, int size) { setlocale(LC_ALL, "ukr"); int* ptr = array; printf("Введіть %d елементів: ", size); for (int i = 0; i < size; i++) { if (scanf("%d", ptr) != 1) { printf("Невірний ввід. Будь ласка, введіть цілі числа.\n"); while (getchar() != '\n'); // Очищення буфера введення exit(1); // Повертає 0 у разі помилки введення } ptr++; } while (getchar() != '\n'); // Очищення буфера введення після завершення циклу введення return 1; } // Функція для генерації випадкового масиву void generate_random_array(int* array, int size) { srand(time(0)); // Seed для генерації випадкових чисел int* ptr = array; for (int i = 0; i < size; i++) { *ptr = rand() % 100; // Випадкові числа від 0 до 99 ptr++; } } int main() { setlocale(LC_ALL, "ukr"); int size; int choice; printf("Введіть розмір масиву: "); scanf("%d", &size); int* array = (int*)malloc(size * sizeof(int)); // Виділення пам'яті для масиву if (array == NULL) { printf("Помилка виділення пам'яті\n"); return 1; } int smallest1, smallest2; printf("Виберіть варіант:\n"); printf("1. Ввести масив вручну\n"); printf("2. Створити випадковий масив\n"); printf("Введіть свій вибір: "); scanf("%d", &choice); if (choice == 1) { input_array(array, size); } else if (choice == 2) { generate_random_array(array, size); printf("Згенерований масив: "); int* ptr = array; for (int i = 0; i < size; i++) { printf("%d ", *ptr); ptr++; } printf("\n"); } else { printf("Невірне значення.\n"); free(array); // Звільнення виділеної пам'яті return 1; } find_two_smallest_odds(array, size, &smallest1, &smallest2); printf("Два найменших непарних числа: %d та %d\n", smallest1, smallest2); free(array); // Звільнення виділеної пам'яті return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines