/**
* @file main.c
* @author Зайченко Д.І., гр. 515i
* @date 04 квітня 2023
* @brief Лабораторна робота No 3
*
* Використання масивів. Завдання 3
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include "header.h"
int main() {
setlocale(LC_ALL, "Ukr");
int input;
int array[7][7];
int check = 0;
printf("Виберiть як ви хочете заповнити масив: \n1 - з клавiатури \n2 - випадковi числа");
printf("\nВведiть 1 або 2: ");
scanf("%d", &input);
switch (input) {
//заповнення з клавіатури
case 1: by_hand(array); break;
//випадкове заповнення
case 2: random(array); break;
//невірне введення
default:printf("Невiрне введення"); return 0;
}
output(array);
printf("Сума видiлених елементiв матрицi = %d\n", summ(array));
printf("Визначник пiдматрицi = %ld", determinant(array));
}
/**
* @file realisation.c
* @author Зайченко Д.І., гр. 515i
* @date 04 квітня 2023
* @brief Лабораторна робота No 3
*
* Використання масивів. Завдання 3
*/
#include "header.h"
//функція заповнення матриці з клавіатури
void by_hand(int array[]) {
printf("Введіть 1 рядок\n");
for (int i = 0; i < 49; i++) {
scanf("%d", array+i);
if (i != 0 && (i==6||(i+1)%7==0))
printf("Введіть %d рядок\n",(i+6)/6);
}
}
//функція заповнення матриці випадковими числами
void random(int array[]) {
srand(time(0));
for (int i = 0; i<49; i++)
*(array+i) = (rand()%(N*2)-N);
}
//функція виведення матриці
void output(int array[]) {
printf("Ваша матриця: \n");
for (int i = 0; i < 49; i++) {
printf("\t%d", *(array + i));
if (i != 0 && (i == 6 || (i + 1) % 7 == 0))
printf("\n");
}
}
//функція обчислення суми виділених елементів
int summ(int array[]) {
int temp = *(array+24)*(-1);
for (int i = 0; i < 49; i += 8) {
temp += *(array + i);
}
for (int i = 6; i < 43; i += 6) {
temp += *(array + i);
}
return temp;
}
//функція обчислення визначника підматриці 3х3
long determinant(int array[]){
//обчислення мінорів
int minor1 = *(array + 8) * *(array + 16) - *(array + 15) * *(array + 9);
int minor2 = *(array + 7) * *(array + 16) - *(array + 9) * *(array + 14);
int minor3 = *(array + 7) * *(array + 15) - *(array + 14) * *(array + 8);
//обчислення визначника
return (*(array) * minor1- *(array+1) * minor2+ *(array+2) * minor3);
}
/**
* @file header.h
* @author Зайченко Д.І., гр. 515i
* @date 04 квітня 2023
* @brief Лабораторна робота No 3
*
* Використання масивів. Завдання 3
*/
#ifndef PROTOTYPES
#define PROTOTYPES
#include "const.h"
void by_hand(int array[]);
void random(int array[]);
void output(int array[]);
int summ(int array[]);
long determinant(int array[]);
#endif
/**
* @file const.h
* @author Зайченко Д.І., гр. 515i
* @date 04 квітня 2023
* @brief Лабораторна робота No 3
*
* Використання масивів. Завдання 3
*/
#ifndef CONST
#define CONST
#define N 100
#endif