#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
#include "prototypes.h"
int main() {
setlocale(LC_ALL, "Ukr");
int input;
int array[MATRIX_WIDTH][MATRIX_HEIGHT];
printf("Виберiть спосіб заповнення матриці: \n1 - з клавiатури \n2 - випадковi числа\n");
scanf_s("%d", &input);
switch (input) {
//заповнення з клавіатури
case 1: from_keyboard(array); break;
//випадкове заповнення
case 2: by_random(array); break;
//невірне введення
default:printf("Некоректне введення"); return 0;
}
output(array);
printf("Сума видiлених елементiв матрицi = %d\n", summ(array));
printf("Визначник пiдматрицi = %ld", determinant(array));
}
#include "prototypes.h"
//функція заповнення матриці з клавіатури
void from_keyboard(int array[]) {
for (int i = 0; i < MATRIX_WIDTH*MATRIX_HEIGHT; i++) {
printf("Введіть %d число: ",i+1);
scanf_s("%d", &array[i]);
}
}
//функція заповнення матриці випадковими числами
void by_random(int array[]) {
srand(time(0));
for (int i = 0; i < MATRIX_WIDTH * MATRIX_HEIGHT; i++)
array[i] = (rand() % (N * 2) - N);
}
//функція виведення матриці
void output(int array[]) {
printf("Ваша матриця: \n");
for (int i = 0; i < MATRIX_WIDTH * MATRIX_HEIGHT; i++) {
printf("\t%d", array[i]);
if (i != 0 && (i == 6 || (i + 1) % 7 == 0))
printf("\n");
}
}
//функція обчислення суми виділених елементів
int summ(int array[]) {
int temp = 0;
for (int i = 1; i < MATRIX_WIDTH * MATRIX_HEIGHT; i += 2) {
temp += array[i];
}
return temp;
}
//функція обчислення визначника підматриці 3х3
long determinant(int array[]) {
//обчислення мінорів
int minor1 = array[32] * array[40] - array[39] * array[33];
int minor2 = array[31] * array[40] - array[38] * array[33];
int minor3 = array[31] * array[39] - array[38] * array[32];
//обчислення визначника
return (array[24]*minor1 - array[25] * minor2 + array[26] * minor3);
}
#ifndef PROTOTYPES
#define PROTOTYPES
#include "constants.h"
void from_keyboard(int array[]);
void by_random(int array[]);
void output(int array[]);
int summ(int array[]);
long determinant(int array[]);
#endif
#ifndef CONST
#define CONST
#define N 120
#define MATRIX_WIDTH 7
#define MATRIX_HEIGHT 7
#endif
#include "pch.h"
#include "..\task3\module1.c"
TEST(SUMM, TEST1) {
int array[7][7] = { 1,1,1,1,1,1,1,
1,1,1,1,1,1,1,
1,1,1,1,1,1,1,
1,1,1,1,1,1,1,
1,1,1,1,1,1,1,
1,1,1,1,1,1,1,
1,1,1,1,1,1,1 };
int* a = &array[0][0];
EXPECT_EQ(summ(a), 24);
EXPECT_EQ(determinant(a), 0);
}
TEST(SUMM, TEST2) {
int array[7][7], * a = &array[0][0];
for (int i = 0; i < 49; i++) {
*(a + i) = i + 1;
}
EXPECT_EQ(600, summ(a));
EXPECT_EQ(0, determinant(a));
}
TEST(SUMM, TEST3) {
int array[7][7] = { 120,-35,6,13,18,22,-42,
59,7,-35,64,-13,23,14,
67,-13,0,62,32,-95,15,
85,32,-43,85,27,-16,57,
102,15,-1,-49,1,-10,6,
14,-11,21,4,-2,67,13,
12,101,53,-105,8,16,58 };
int* a = &array[0][0];
EXPECT_EQ(summ(a), 119);
EXPECT_EQ(determinant(a), 90052);
}