Quick actions

cmd+k|ctrl+k

Navigation

Languages

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

Snippet info

Language

C

Visibility

public

Author

d.y.havalian

Created

2025-04-13T16:33:45.694256Z

Updated

2025-04-14T16:17:43.41469Z

/*
* @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;
}
INFO