lab3 task3

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <stdlib.h> #include <time.h> #define SIZE 6 #define RAND_LOWER -100.0 #define RAND_UPPER 0.0 // Функція генерації випадкового числа в межах RAND_LOWER...RAND_UPPER float згенеруватиЧисло() { return ((float)rand() / (float)RAND_MAX) * (RAND_UPPER - RAND_LOWER) + RAND_LOWER; } // Введення матриці з клавіатури з перевіркою правильності та меж діапазону void ввестиМатрицю(float матриця[SIZE][SIZE]) { for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { float значення; int коректно; do { printf("Елемент [%d][%d] (в межах %.1f до %.1f): ", i, j, RAND_LOWER, RAND_UPPER); коректно = scanf("%f", &значення); if (!коректно) { printf("❌ Помилка: введено не число. Спробуйте ще раз.\n"); while (getchar() != '\n'); // очищення буфера } else if (значення < RAND_LOWER || значення > RAND_UPPER) { printf("❌ Помилка: число поза межами діапазону. Введіть число в межах [%.1f; %.1f].\n", RAND_LOWER, RAND_UPPER); коректно = 0; } else { матриця[i][j] = значення; } } while (!коректно); } } } // Заповнення матриці випадковими числами void випадковаМатриця(float матриця[SIZE][SIZE]) { for (int i = 0; i < SIZE; i++) for (int j = 0; j < SIZE; j++) матриця[i][j] = згенеруватиЧисло(); } // Виведення матриці void вивестиМатрицю(float матриця[SIZE][SIZE]) { printf("\nМатриця:\n"); for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { printf("%8.2f ", матриця[i][j]); } printf("\n"); } } // Обчислення суми елементів усередині рамки (задача 3.1) float сумаВиділенихЕлементів(float матриця[SIZE][SIZE]) { float сума = 0.0; for (int i = 1; i < SIZE - 1; i++) for (int j = 1; j < SIZE - 1; j++) сума += матриця[i][j]; return сума; } // Визначник 3x3 float визначник3x3(float m[3][3]) { return m[0][0]*(m[1][1]*m[2][2] - m[1][2]*m[2][1]) - m[0][1]*(m[1][0]*m[2][2] - m[1][2]*m[2][0]) + m[0][2]*(m[1][0]*m[2][1] - m[1][1]*m[2][0]); } // Отримати підматрицю 3x3 із центральної частини нижнього правого кута float визначникПідматриці(float матриця[SIZE][SIZE]) { float m[3][3]; printf("\nВиділена підматриця 3x3:\n"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { m[i][j] = матриця[i + 2][j + 2]; printf("%8.2f ", m[i][j]); } printf("\n"); } return визначник3x3(m); } int main() { float матриця[SIZE][SIZE]; int вибір; srand((unsigned)time(NULL)); // Вибір способу введення printf("Оберіть спосіб заповнення матриці:\n1 — з клавіатури\n2 — випадковими числами в діапазоні [%.1f; %.1f]\nВаш вибір: ", RAND_LOWER, RAND_UPPER); while (scanf("%d", &вибір) != 1 || (вибір != 1 && вибір != 2)) { printf("❌евірний вибір. Введіть 1 або 2: "); while (getchar() != '\n'); // очищення буфера } if (вибір == 1) { ввестиМатрицю(матриця); } else { випадковаМатриця(матриця); } вивестиМатрицю(матриця); float сума = сумаВиділенихЕлементів(матриця); float детермінант = визначникПідматриці(матриця); printf("\nЗадача 3.1: Сума виділених елементів = %.2f\n", сума); printf("Задача 3.2: Визначник підматриці 3x3 = %.2f\n", детермінант); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines