#define _CRT_SECURE_NO_WARNINGS_
#include<stdio.h>
void ispisi_matricu(int mat[10][10], int n) {
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
}
}
}
void ispisi_niz(int niz[], int n) {
for (int i = 0; i < n; i++)
{
}
}
/*122.Дата је матрица целих бројева. Написати функцију која рачуна суму елемената задатог реда
матрице.*/
int nadji_sumu_reda(int mat[10][10], int n, int red) {
int suma = 0;
for (int i = 0; i < n; i++)
{
suma += mat[red][i];
}
return suma;
}
/*124. isto za kolonu*/
int nadji_sumu_kolone(int mat[10][10], int n, int kolona) {
int suma = 0;
for (int i = 0; i < n; i++)
{
suma += mat[i][kolona];
}
return suma;
}
//а) Имплементирати потпрограм je_rastuci који проверава да ли је задати ред матрице растући.
int je_rastuci(int mat[10][10], int n, int red) {
for (int i = 1; i < n; i++)
{
if (mat[red][i - 1] >= mat[red][i]) {
return 0;
}
}
return 1;
}
//б) Имплементирати потпрограм ima_podniz_neparnih који проверава да ли у низу целих
//бројева постоји подниз непарних бројева чија је дужина већа од 2.
int ima_podniz_neparnih(int niz[], int n) {
// ima podniz neparnih minimalne duzine 2
for (int i = 0; i < n - 1; i++)
{
if (niz[i] % 2 == 1 && niz[i + 1] % 2 == 1) {
return 1;
}
}
return 0;
}
//в) Имплементирати потпрограм prebaci_obod_u_niz који све елементе који се налазе по ободу
//матрице пребацује у низ.Написати процедуру за приказ елемената низа и позвати је у оквиру
//овог потпрограма за приказ елемената ново - креираног низа.У оквиру ово потпрограма
//позвати процедуру која проверава да ли у ново - креираном низу постоји подниз непарних
//бројева чија је дужина већа од 2 (искористити претходно имплементирани потпрограм
// ima_podniz_neparnih).
void prebaci_obod_u_niz(int mat[10][10], int n) {
int niz[100], dim = 0;
for (int i = 0; i < n; i++)
{
niz[dim++] = mat[0][i];
}
for (int i = 1; i < n; i++)
{
niz[dim++] = mat[i][n - 1];
}
for (int i = n - 2; i >= 0; i--)
{
niz[dim++] = mat[n-1][i];
}
for (int i = n - 2; i >= 1; i--)
{
niz[dim++] = mat[i][0];
}
ispisi_niz(niz, dim);
if (ima_podniz_neparnih(niz, dim) == 1) {
printf("Postoji podniz od bar 2 neparna clana\n");
return;
}
printf("Ne postoji podniz od bar 2 neparna clana\n");
/*for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (i == 0 || i == n - 1 || j == 0 || j == n - 1) {
niz[dim++] = mat[i][j];
}
}
}*/
}
int da_li_se_broj_nalazi_na_glavnoj(int matrica[10][10], int n, int broj) {
for (int i = 0; i < n; i++)
{
if (matrica[i][i] == broj) return 1;
}
return 0;
}
/*150. Da li se svi el na sporednoj nalaze i na glavnoj*/
int da_li_se_svi_na_sporednoj_nalaze_i_na_glavnoj(int matrica[10][10], int n) {
// prolazak kroz sporednu
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
//matrica[i][j] = 9, 5, 5, 9 odnosno svaki na sporednoj
if (i + j == n - 1) {
// siguran sam da je mat[i][j] na sporednoj dijagonali
// proveri da li je ovaj clan negde na glavnoj
if (da_li_se_broj_nalazi_na_glavnoj(matrica, n, matrica[i][j]) == 0) {
return 0;
}
}
}
}
return 1;
}
int da_li_postoji_u_nizu(int niz[], int n, int broj) {
for (int i = 0; i < n; i++)
{
if (niz[i] == broj) return 1;
}
return 0;
}
/*171 unija glaVNE i sporedne dijagonale bez ponavavljanja*/
void unija_glavne_i_sporedne(int matrica[10][10], int n) {
int niz[100];
int dim = 0;
for (int i = 0; i < n; i++)
{
if (da_li_postoji_u_nizu(niz, dim, matrica[i][i]) == 0) {
niz[dim++] = matrica[i][i];
}
}
for (int i = 0; i < n; i++)
{
if(da_li_postoji_u_nizu(niz, dim, matrica[i][n-1-i]) == 0) {
niz[dim++] = matrica[i][n - 1 - i];
}
}
ispisi_niz(niz, dim);
}
void dodaj_broj_u_niz_na_indeks(int niz[], int* n, int broj, int index) {
// index = 1, n=4 => i=4,3,2
for (int i = *n; i > index; i--)
{
niz[i] = niz[i - 1];
}
niz[index] = broj;
(*n)++;
}
//(а)Написати функцију која додаје нови елемент у низ али тако да низ остане сортиран у
//неопадајућем редоследу,
void dodaj_da_ostane_sortiran_neopdajuce(int niz[], int* n, int broj) {
// 9 5 5 3
for (int i = 0; i < *n; i++)
{
if (broj >= niz[i]) {
dodaj_broj_u_niz_na_indeks(niz, n, broj, i);
return;
}
}
dodaj_broj_u_niz_na_indeks(niz, n, broj, *n);
}
//(б)Написати процедуру која формира неопадајући низ од елемената испод главне дијагонале
//матрице.
void formiraj_neopdajuci(int matrica[10][10], int n) {
int niz[100], dim = 0;
for (int i = 0; i < n; i++)
{
dodaj_da_ostane_sortiran_neopdajuce(niz, &dim, matrica[i][i]);
}
ispisi_niz(niz, dim);
}
int main(void) {
int matrica[10][10] = {
{4,7,8,8},
{4,2,5,7},
{7,5,4,2},
{11,2,1,3}
};
int n = 4;
ispisi_matricu(matrica, n);
formiraj_neopdajuci(matrica, n);
}