You are on page 1of 3

-------

LV4-Z1
-------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

struct tocka{
int x;
int y;
int z;
};
struct trokut{
//postavljamo vrhove trokuta kao pokazivace koje cemo kasnije psotaviti na
adrese unesenih tocaka
struct tocka* t1;
struct tocka* t2;
struct tocka* t3;
};
float distance(struct tocka* t2, struct tocka* t1){
//funkcija koja računa udaljenost između dvije točke; u funkciji pow
pokazujemo na vrijednost koordinata dviju točaka koje onda oduzimamo
return sqrt(pow(t2->x - t1->x, 2) + pow(t2->y - t1->y, 2) + pow(t2->z - t1-
>z, 2));
}
float opseg(struct trokut t){
//funkcija racuna opseg zbrajanjem povratnih vrijednosti funkcije distance za
sve tri stranice trokuta
return distance(t.t1, t.t2) + distance(t.t2, t.t3) + distance(t.t3, t.t1);
}

float najveciOpseg(struct trokut* tr, int m){


//funkcija postavlja najveći opseg na 0 te ekoristi pomoćnu varijablu temp,
koju postavlja na vrijednost koju vraća funkcija opseg, nakon čega ju postavlja kao
vrijednost varijable najveći te u
float najveci = 0, temp = 0;
for (int i = 0; i < m; i++){
temp = opseg(tr[i]);
if (temp > najveci)
najveci = temp;
}
return najveci;
}

int main(void) {
struct tocka tocke[20];
struct trokut T[20], * tr;

tr = &T[0];
//postavljamo pokazivač tr na adresu prvog člana polja struktura trokuti

int n, m;
int t1, t2, t3;
float opseg;

//printf("Unesite broj tocaka: ");


scanf_s("%d", &n);
//printf("Unesite broj trokuta: ");
scanf_s("%d", &m);
for (int i = 0; i < n; i++)
//printf("Koordinte tocke[%d]: ", i+1);
scanf_s("%d %d %d", &tocke[i].x, &tocke[i].y, &tocke[i].z);
for (int i = 0; i < m; i++){
//printf("Unesite indekse vrhova trokuta: ");
scanf_s("%d%d%d", &t1, &t2, &t3);
//korisnik unosi indeks tocke koju zeli postaviti za vrh trokuta nakon čega
se vrh trokuta postavlja na adresu točke danog indeksa
T[i].t1 = &tocke[t1];
T[i].t2 = &tocke[t2];
T[i].t3 = &tocke[t3];
}
printf("REZULTATI:\n");
printf("%.2f\n", najveciOpseg(tr, m));

return 0;
}

-------
LV4-Z2
-------
#include <stdio.h>

struct proizvod {
char ime[20];
float cijena;
int kolicina;
} artikl[10], *max;
//definiranje polja struktura i pokazivača kojeg ćemo postaviti da pokazuje
na adresu određene strukture iz polja artikl

int main(void) {
int n, i, temp = 0;
float max_price;
char clr; //varijabla u koju
će se spremati \n znak poslije funkcije scanf, a prije funkcije fgets

//printf("Unesi broj n: ");


scanf_s("%d", &n);
scanf_s("%c", &clr);

for (i = 0; i < n; i++) {


// printf("Ime %d. artikla: ", i + 1);
fgets(artikl[i].ime, 20, stdin);
// printf("Cijena %d. artikla: ", i + 1);
scanf_s("%f", &artikl[i].cijena);
// printf("Kolicina %d. artikla: ", i + 1);
scanf_s("%d", &artikl[i].kolicina);
scanf_s("%c", &clr);
}

max_price = artikl[0].cijena;
//postavljamo cijenu prvog elementa kao maksimalnu cijenu, pa onda u for
petlji prolazimo kroz polje i uspoređujemo kako bi dobili stvarnu najveću
vrijednost
for (i = 0; i < n; i++) {
if (artikl[i].cijena > max_price) {
max_price = artikl[i].cijena;
temp = i; //u varijablu temp
postavljamo indeks artikla koji ima najveću cijenu
}
}

max = &artikl[temp]; //pokazivač


postavljamo na adresu onog artikla koji ima najveću cijenu (artikl s indeksom temp)

printf("REZULTATI:\n");
printf("cijena: %.2f, kolicina: %d", max->cijena, max->kolicina);
//ispisujemo vrijednosti koje se nalaze na adresama na koje pokazivač
pokazuje

return 0;
}

You might also like