ГАВАЛЯН 515і Лаб.3 Завдання 3

Run Settings
LanguageC
Language Version
Run Command
/* * @file lab3_3.cpp * @author Гавалян Д.Є, гр. 515i * @date 5 квітня 2025 * @brief Лабораторна робота № 3, варіант 19 * * Використання масивів. Завдання 3 */ #include <stdio.h> #include <locale.h> #include "module.h" int main() { setlocale(LC_ALL, "Ukr"); int matrix[SIZE][SIZE]; int choice; // Запит користувача про спосіб заповнення матриці printf("Виберiть спосiб заповнення матрицi:\n"); printf("1 - введення з клавiатури\n"); printf("2 - автоматичне заповнення (rand)\n"); printf("Ваш вибiр: "); scanf("%d", &choice); // Використовую switch для обробки вибору користувача switch (choice) { case 1: // Ручне введення елементiв матрицi printf("Введiть елементи матрицi розмiром %dx%d:\n", SIZE, SIZE); for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { printf("Елемент [%d][%d]: ", i, j); scanf("%d", &matrix[i][j]); } } break; case 2: // Автоматичне заповнення матрицi випадковими числами for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { matrix[i][j] = MIN_RAND + rand() % (MAX_RAND - MIN_RAND + 1); } } printf("Матриця заповнена випадковими числами.\n"); break; default: // Якщо користувач ввiв невiрне значення printf("Невiрний вибiр. Буде використано автоматичне заповнення.\n"); for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { matrix[i][j] = MIN_RAND + rand() % (MAX_RAND - MIN_RAND + 1); } } break; } // Виводимо матрицю на екран printf("\nМатриця:\n"); for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE; j++) { printf("%4d ", matrix[i][j]); } printf("\n"); } // Вибір функції: сума або визначник printf("\nВиберiть функцiю:\n"); printf("Введіть 1 (3.1) - Обчислити суму видiлених елементiв\n"); printf("Введіть 2 (3.2) - Обчислити визначник пiдматрицi 3x3\n"); printf("Ваш вибiр: "); int funcChoice; scanf("%d", &funcChoice); switch (funcChoice) { case 1: { // Обчислити суму видiлених елементiв int sum = sumSelectedElements(matrix); printf("\nСума НЕ зафарбованих елементiв: %d\n", sum); break; } case 2: { // Створення пiдматрицi 3x3, яка починається з елемента [1][2] int submatrix[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { submatrix[i][j] = matrix[i + 1][j + 2]; // Зміщення рядків і стовпців } } // Виведення пiдматрицi на екран printf("\nПiдматриця 3x3:\n"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { printf("%4d ", submatrix[i][j]); } printf("\n"); } // Обчислення визначника пiдматрицi 3x3 int det = determinant3x3(submatrix); printf("\nВизначник пiдматрицi 3x3: %d\n", det); break; } default: printf("Невiрний вибiр функцiї.\n"); break; } return 0; }
#include "module.h" // Функція для обчислення суми НЕ зафарбованих елементів матриці int sumSelectedElements(int matrix[SIZE][SIZE]) { int sum = 0; // Сума елементів першого ряду з індексами 1 до 5 for (int j = 1; j < SIZE - 1; j++) { sum += matrix[0][j]; } // Сума елементів другого ряду з індексами 2 до 4 for (int j = 2; j < SIZE - 2; j++) { sum += matrix[1][j]; } // Додаємо центральний елемент третього ряду (рядок 2, стовпець 3) sum += matrix[2][3]; return sum; } // Функція для обчислення визначника матриці 3x3 int determinant3x3(int submatrix[3][3]) { int term1 = submatrix[0][0] * (submatrix[1][1] * submatrix[2][2] - submatrix[1][2] * submatrix[2][1]); int term2 = submatrix[0][1] * (submatrix[1][0] * submatrix[2][2] - submatrix[1][2] * submatrix[2][0]); int term3 = submatrix[0][2] * (submatrix[1][0] * submatrix[2][1] - submatrix[1][1] * submatrix[2][0]); int det = term1 - term2 + term3; printf("\nОбчислення визначника:\n"); printf("1: %d\n", term1); printf("2: %d\n", term2); printf("3: %d\n", term3); printf("Визначник: %d\n", det); return det; }
#ifndef MODULE_H #define MODULE_H #include <stdio.h> #include <stdlib.h> // Розмір квадратної матриці 7x7 #define SIZE 7 // Мінімальне значення для rand() #define MIN_RAND -40 // Максимальне значення для rand() #define MAX_RAND 120 int sumSelectedElements(int matrix[SIZE][SIZE]); // Прототип функції для обчислення визначника матриці 3x3 int determinant3x3(int submatrix[3][3]); #endif
Editor Settings
Theme
Key bindings
Full width
Lines