#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#define MAX_N 100
int sum_H_shape_elements(int matrix[][MAX_N], int rows, int cols, int highlighted_elements[][2], int n_elements) {
int sum = 0;
for (int i = 0; i < n_elements; ++i) {
int row = highlighted_elements[i][0];
int col = highlighted_elements[i][1];
// Check if the element is part of the "H" shape
if (row >= 0 && row < rows && col >= 0 && col < cols) {
if (matrix[row][col] != 0) {
sum += matrix[row][col];
}
}
}
return sum;
}
// Підрахунок визначника 3x3 матриці
int determinant(int submatrix[][3]) {
int det = submatrix[0][0] * (submatrix[1][1] * submatrix[2][2] - submatrix[1][2] * submatrix[2][1])
- submatrix[0][1] * (submatrix[1][0] * submatrix[2][2] - submatrix[1][2] * submatrix[2][0])
+ submatrix[0][2] * (submatrix[1][0] * submatrix[2][1] - submatrix[1][1] * submatrix[2][0]);
return det;
}
// Обчислення визначника виділеної підматриці 3x3
int determinant_of_submatrix(int matrix[][MAX_N], int center_row, int center_col) {
int submatrix[3][3];
// Заповнення підматриці
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
submatrix[i][j] = matrix[center_row - 1 + i][center_col - 1 + j];
}
}
// Обчислення визначника підматриці
int det = determinant(submatrix);
return det;
}
int main() {
int matrix[MAX_N][MAX_N];
int rows, cols;
setlocale(LC_ALL, "ukr");
printf("Введіть розміри матриці (рядки, стовпці): ");
scanf("%d %d", &rows, &cols);
if (rows <= 0 || cols <= 0 || rows > MAX_N || cols > MAX_N) {
printf("Некоректні розміри матриці\n");
return 1;
}
printf("1. Ввести з клавіатури\n2. Заповнити випадковими числами\n");
printf("Ваш вибір: ");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Введіть елементи матриці:\n");
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
scanf("%d", &matrix[i][j]);
}
}
break;
case 2: {
int min = -30, max = 30;
printf("Введіть діапазон випадкових чисел (мінімальне, максимальне): ");
scanf("%d %d", &min, &max);
srand((unsigned int)time(NULL));
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
matrix[i][j] = rand() % (max - min + 1) + min;
}
}
break;
}
default:
printf("Неправильний вибір!\n");
return 1;
}
printf("Введена матриця:\n");
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
int n_elements = 5;
int highlighted_elements[5][2] = {
{0, 0}, {0, cols - 1}, {rows / 2, 0}, {rows - 1, 0}, {rows - 1, cols - 1}
};
int sum = sum_H_shape_elements(matrix, rows, cols, highlighted_elements, n_elements);
printf("Сума елементів, які утворюють H: %d\n", sum);
return 0;
// Обчислення визначника підматриці 3x3
int center_row = rows - 2; // індекс рядка центрального елемента підматриці
int center_col = cols / 2 - 1; // індекс стовпця центрального елемента підматриці
if (center_row >= 0 && center_row + 2 < rows && center_col >= 0 && center_col + 2 < cols) {
int det = determinant_of_submatrix(matrix, center_row, center_col);
printf("Визначник підматриці 3x3: %d\n", det);
}
else {
printf("Підматриця 3x3 не вміщується у межах матриці.\n");
}
return 0;
}
/**
* @file matrices.c
* @author Нездоймишапка А.О., гр. 515
* @date 03 березня 2023
* @brief Лабораторна робота № 3
*
* Використання масивів. Завдання 3
*/
#include "matrices.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void inputMatrix(int matrix[][MAX_N], int rows, int cols) {
printf("Enter the elements of the matrix:\n");
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
scanf("%d", &matrix[i][j]);
}
}
}
void randMatrix(int matrix[][MAX_N], int rows, int cols, int min, int max) {
srand((unsigned int)time(NULL)); // ініціалізація генератора випадкових чисел
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
matrix[i][j] = rand() % (max - min + 1) + min;
}
}
}
/**
* @file matrices.h
* @author Нездоймишапка А.О., гр. 515
* @date 03 березня 2023
* @brief Лабораторна робота № 3
*
* Використання масивів. Завдання 3
*/
#ifndef MATRICES_H
#define MATRICES_H
#define MAX_N 100
void inputMatrix(int matrix[][MAX_N], int rows, int cols);
void randMatrix(int matrix[][MAX_N], int rows, int cols, int min, int max);
#endif