лабораторна 3 завдання 3

Run Settings
LanguageC
Language Version
Run Command
#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
Editor Settings
Theme
Key bindings
Full width
Lines