/**
	* @file Main.cpp
	* @autor Коваленко І. В. 515б
	* @date 20.03.2023
	* @brief Лабораторна робота №3, варіант 11
	*
	* Використання масивів. Завдання 3
*/
#include "Module.h"
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
int main(void) {
	//подключение языковых пакетов
	setlocale(LC_ALL, "ru");
	srand(time(NULL));
	//создание ключевых переменных
	int arr[COL][ROW] = { {0}, {0} };
	int* parr = &arr[0][0];
	//выбор и заполнение массива
	fill_array(parr);
	//вывод массива на экран
	show_array(parr);
	//Сумма выбраных элементов
	printf("\n");
	printf("Сумма выбраных элементов: %i\n", Foonk1(parr));
	printf("\n");
	//Показатель подматрицы
	printf("Показатель подматрицы 3х3: %i\n", Foonk2(parr));
	printf("\n");
	//Завершение программы
	printf("Завершение програмы.");
}
#define PRIVATE static
#define PUBLIC
#define ERROR 0
#define CORRECT 1
#define ROW 7
#define COL 7
#define LINE "+===============+===============+===============+===============+===============+===============+===============+\n"
#define INFO_LINE "\t+====================================+\n"
#define bool int
void show_array(int* parr);
void fill_array(int* parr);
int Foonk1(int* parr);
int Foonk2(int* parr);
#include "Module.h"
#include <stdio.h>
#include <stdlib.h>
//Вывод массива на экран
PUBLIC void show_array(int* parr) {
	printf("Ваш массив: \n\n");
	printf(LINE);
	for (int i = 0; i < COL * ROW; i++) {
		printf("| \t%i\t", *(parr + i));
		if (!((i + 1) % 7)) {
			printf("|\n");
			printf(LINE);
		}
	}
}
//заполнение массива
PUBLIC void fill_array(int* parr) {
	printf("Выбирете способ заполнения вашего вектора: \n");
	printf(INFO_LINE);
	printf("\t| f - заполнение вручную             |\n");
	printf("\t| r - заполнение случайными числами  |\n");
	printf(INFO_LINE);
	char choise;
	bool cor_choise = 0;
	do {
		choise = getchar();
		if (choise == 'f' || choise == 'r')
			cor_choise = 1;
	} while (cor_choise == 0);
	if (choise == 'f') {
		for (int i = 0; i < COL * ROW; i++) {
			printf("Введите число: \n");
			int j = 0;
			scanf("%i", &j);
			*(parr + i) = j;
			show_array(parr);
		}
	}
	else {
		for (int i = 0; i < COL * ROW; i++) {
			*(parr + i) = rand() % 21 - 10;
		}
	}
}
//сумма выбраных элементов
PUBLIC int Foonk1(int* parr) {
	return *(parr + 6) + *(parr + 12) + *(parr + 18) + *(parr + 30) + *(parr + 36) + *(parr + 42);
}
/*
*parr 17 *parr 18 *parr 19
*parr 24 *parr 25 *parr 26
*parr 31 *parr 32 *parr 33
*/
//показатель подматрицы
PUBLIC int Foonk2(int* parr) {
	int K1, K2, K3, K4, K5, K6;
	K1 = *(parr + 17) * *(parr + 25) * *(parr + 33);
	K2 = *(parr + 18) * *(parr + 26) * *(parr + 31);
	K3 = *(parr + 19) * *(parr + 32) * *(parr + 24);
	K4 = *(parr + 19) * *(parr + 25) * *(parr + 31);
	K5 = *(parr + 18) * *(parr + 24) * *(parr + 33);
	K6 = *(parr + 17) * *(parr + 26) * *(parr + 32);
	return K1 + K2 + K3 - K4 - K5 - K6;
}