/*
* @file lab3_3.c
* @author Герасимюк Д.В., гр. 515і1
* @date 27 березня 2024
* @brief Лабораторна робота №3, варіант 3
* Використання масивів. Завдання 3
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#include "matrix.h"
#define MATRIX_SIZE 7
int main()
{
setlocale(LC_ALL, "Ukr");
int matrix[MATRIX_SIZE][MATRIX_SIZE];
int choice;
printf("Оберіть дію:\n");
printf("1. Введення значень з клавіатури\n");
printf("2. Заповнення випадковими числами\n");
scanf("%d", &choice);
// заповнення матриці
switch (choice) {
case 1:
printf("Введіть елементи матриці %dx%d:\n", MATRIX_SIZE, MATRIX_SIZE);
for (int i = 0; i < MATRIX_SIZE; i++) {
for (int j = 0; j < MATRIX_SIZE; j++) {
scanf("%d", &matrix[i][j]);
}
while (getchar() != '\n');
}
break;
case 2:
fillRandom(matrix);
printf("Матриця, заповнена випадковими числами:\n");
printMatrix(matrix);
break;
default:
printf("Некоректний вибір.\n");
return 1;
}
// сума
int sum = sum_matrix(matrix);
printf("Сума виділених елементів матриці: %d\n", sum);
// положення підматриці
int submatrix[3][3] = {
{matrix[4][4], matrix[4][5], matrix[4][6]},
{matrix[5][4], matrix[5][5], matrix[5][6]},
{matrix[6][4], matrix[6][5], matrix[6][6]}
};
// визначник
int det = vyznachnyk(submatrix);
printf("Визначник підматриці 3x3: %d\n", det);
return 0;
}
/*
* @file matrix.h
* @author Герасимюк Д.В., гр. 515і1
* @date 27 березня 2024
* @brief Лабораторна робота №3, варіант 3
* Використання масивів. Завдання 3
*/
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MATRIX_SIZE 7
int sum_matrix(int matrix[MATRIX_SIZE][MATRIX_SIZE]) {
int sum = 0;
for (int i = 0; i < MATRIX_SIZE; i++) {
sum += matrix[i][3]; // сума елементів з 4 стовпця
sum += matrix[i][6]; // сума елементів з 7 стовпця
}
return sum;
}
int vyznachnyk(int submatrix[3][3]) {
//метод Саррюса
int det = submatrix[0][0] * submatrix[1][1] * submatrix[2][2] +
submatrix[0][1] * submatrix[1][2] * submatrix[2][0] +
submatrix[0][2] * submatrix[1][0] * submatrix[2][1] -
submatrix[0][2] * submatrix[1][1] * submatrix[2][0] -
submatrix[0][0] * submatrix[1][2] * submatrix[2][1] -
submatrix[0][1] * submatrix[1][0] * submatrix[2][2];
return det;
}
void fillRandom(int matrix[MATRIX_SIZE][MATRIX_SIZE]) {
srand(time(NULL));
for (int i = 0; i < MATRIX_SIZE; i++) {
for (int j = 0; j < MATRIX_SIZE; j++) {
matrix[i][j] = rand() % 101; // rand від 0 до 100
}
}
}
void printMatrix(int matrix[MATRIX_SIZE][MATRIX_SIZE]) {
for (int i = 0; i < MATRIX_SIZE; i++) {
for (int j = 0; j < MATRIX_SIZE; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
}