#include <stdio.h>
#include "matrix.h"
#include <locale.h>
int main() {
setlocale(LC_CTYPE, "ukr");
int matrix[MAX_ROWS][MAX_COLS];
int size = 7; // Відповідно до рисунку з варіанту — матриця 6x6
int choice;
printf("Оберiть спосiб заповнення матрицi:\n");
printf("1 - вручну\n2 - випадковими числами [-50; 110]\nВаш вибiр: ");
scanf("%d", &choice);
if (choice == 1)
fillMatrixManual(matrix, size, size);
else
fillMatrixRandom(matrix, size, size, -50, 110);
printMatrix(matrix, size, size);
int sum = calculateZoneSum(matrix, size);
printf("Сума елементiв у зафарбованiй зонi: %d\n", sum);
int submatrix[3][3];
extractSubmatrix3x3(matrix, submatrix, 1, 4); // Відступ 1 вниз, 4 праворуч
int det = calculateDeterminant3x3(submatrix);
printf("Визначник пiдматрицi 3х3: %d\n", det);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "matrix.h"
void fillMatrixManual(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols) {
printf("Введiть елементи матрицi (%dx%d):\n", rows, cols);
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++) {
printf("matrix[%d][%d] = ", i, j);
scanf("%d", &matrix[i][j]);
}
}
void fillMatrixRandom(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols, int min, int max) {
srand(time(NULL));
for (int i = 0; i < rows; i++)
for (int j = 0; j < cols; j++)
matrix[i][j] = rand() % (max - min + 1) + min;
}
void printMatrix(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols) {
printf("Матриця:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++)
printf("%5d", matrix[i][j]);
printf("\n");
}
}
int calculateZoneSum(int matrix[MAX_ROWS][MAX_COLS], int size) {
int sum = 0;
for (int i = 0; i < size; i++) {
// Головна діагональ з правого верхнього до лівого нижнього
sum += matrix[i][size - 1 - i];
// Верхня діагональ (на один рядок вище)
if (i > 0)
sum += matrix[i - 1][size - 1 - i];
// Нижня діагональ (на один рядок нижче)
if (i < size - 1)
sum += matrix[i + 1][size - 1 - i];
}
return sum;
}
void extractSubmatrix3x3(int src[MAX_ROWS][MAX_COLS], int dest[3][3], int start_row, int start_col) {
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
dest[i][j] = src[start_row + i][start_col + j];
}
int calculateDeterminant3x3(int 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]);
}
#ifndef MATRIX_H
#define MATRIX_H
#define MAX_ROWS 7
#define MAX_COLS 7
void fillMatrixManual(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols);
void fillMatrixRandom(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols, int min, int max);
void printMatrix(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols);
int calculateZoneSum(int matrix[MAX_ROWS][MAX_COLS], int size);
void extractSubmatrix3x3(int src[MAX_ROWS][MAX_COLS], int dest[3][3], int start_row, int start_col);
int calculateDeterminant3x3(int m[3][3]);
#endif