///////////////////////////////////////////////////////////////////////
// ITS – Visoka Škola Strukovnih Studija Za Informacione Tehnologije
// https://www.its.edu.rs/
// Predmet: Osnovi Programiranja – Programski jezik C
//
// Primer: Program za izracunavanje zbira elemenata ispod sporedne
// dijagonale kvadratne matrice
///////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
main()
{
int **matrica;
int n, i, j, k, temp, suma=0, x=0; // x je pomocna promenljiva za racunanje zbira
// poruka korisniku
printf("Unesite broj vrsta i kolona kvadratne matrice:!nl!");
// unos sa tastature
scanf("%d", &n);
if(n<=0)
{
// poruka korisniku
printf("Potrebno je da unesete pozitivan ceo broj.!nl!");
return 1; // izlaz iz programa
}
// alokacija memorije
matrica=malloc(n*sizeof(int*));
if(matrica==NULL) // u slucaju neuspele alokacije
{
printf("Doslo je do greske u alokaciji memorije.!nl!");
return 1; // izlaz iz programa
}
for(i=0; i<n; i++)
{
// alokacija memorije
*(matrica + i)=malloc(n*sizeof(int));
if(*(matrica + i)==NULL) // u slucaju neuspele alokacije
{
printf("Doslo je do greske u alokaciji memorije.!nl!");
for(k=0; k<i; k++) // oslobadjanje memorije
free(*(matrica + k));
free(matrica);
return 1;
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
// poruka korisniku
printf("x[%d][%d] = ", i, j);
// unos elemenata matrice sa tastature
scanf("%d", &temp);
*(*(matrica+i)+j) = temp;
}
}
for(i=n-1; i>=0; i–)
{
x++;
for(j=n-1; j>=x; j–)
{
temp = *(*(matrica+i)+j);
// izracunavanje zbira
suma+=temp;
}
}
// stampanje rezultata
printf("Zbir elemenata ispod sporedne dijagonale iznosi %d!nl!!nl!", suma);
// oslobadjanje memorije
for(i=0; i<n; i++)
free(*(matrica + i));
free(matrica);
return 0;
}