Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include <math.h>
- #define MAX_M 100
- #define MIN_M 5
- #define MAX_N 16
- #define MIN_N 3
- typedef struct {
- double x;
- double y;
- } Tocka;
- typedef struct {
- Tocka* vrh1;
- Tocka* vrh2;
- Tocka* vrh3;
- Tocka* vrh4;
- } Cetverokut;
- int unosDuljine() {
- int duljina;
- printf("Unesite duljinu polja: ");
- scanf("%d", &duljina);
- return duljina;
- }
- void zauzimanjeTocaka(int m, Tocka** tocke) {
- *tocke = malloc(m * sizeof(Tocka));
- if (*tocke == NULL) {
- printf("Neuspjesno zauzimanje memorije za tocke\n");
- exit(EXIT_FAILURE);
- }
- }
- void zauzimanjeCetverokuta(int n, Cetverokut** cetverokuti) {
- *cetverokuti = malloc(n * sizeof(Cetverokut));
- if (*cetverokuti == NULL) {
- printf("Neuspjesno zauzimanje memorije za cetverokute\n");
- exit(EXIT_FAILURE);
- }
- }
- void popunjavanjeKoordinata(Tocka* tocke, int m) {
- srand(time(NULL));
- for (int i = 0; i < m; i++) {
- tocke[i].x = rand() % 101;
- tocke[i].y = rand() % 101;
- }
- }
- int odabirVrha(int m, int* dodijeljene_tocke, int broj_dodijeljenih) {
- int vrh;
- do {
- vrh = rand() % m;
- } while (dodijeljene_tocke[vrh] == 4 - broj_dodijeljenih);
- dodijeljene_tocke[vrh]++;
- return vrh;
- }
- double duljinaStranice(Tocka* tocka1, Tocka* tocka2) {
- double dx = tocka1->x - tocka2->x;
- double dy = tocka1->y - tocka2->y;
- return sqrt(dx * dx + dy * dy);
- }
- double opsegChetverokuta(Cetverokut* cetverokut) {
- double a = duljinaStranice(cetverokut->vrh1, cetverokut->vrh2);
- double b = duljinaStranice(cetverokut->vrh2, cetverokut->vrh3);
- double c = duljinaStranice(cetverokut->vrh3, cetverokut->vrh4);
- double d = duljinaStranice(cetverokut->vrh4, cetverokut->vrh1);
- return a + b + c + d;
- }
- void prosjecnaUdaljenost(Cetverokut* cetverokuti, int n, double* min, double* max) {
- double suma = 0;
- *min = INFINITY;
- *max = -INFINITY;
- ////////////////////////////////////////////
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- // Struktura za točku
- typedef struct {
- double x;
- double y;
- } Tocka;
- // Struktura za četverokut
- typedef struct {
- Tocka* vrh1;
- Tocka* vrh2;
- Tocka* vrh3;
- Tocka* vrh4;
- } Cetverokut;
- // Funkcija za unos duljine polja
- int unosDuljine() {
- int duljina;
- printf("Unesite duljinu polja: ");
- scanf("%d", &duljina);
- return duljina;
- }
- // Funkcija za zauzimanje memorije za polje točaka
- Tocka* zauzimanjeTocaka(int duljina) {
- Tocka* polje = (Tocka*) malloc(duljina * sizeof(Tocka));
- return polje;
- }
- // Funkcija za zauzimanje memorije za polje četverokuta
- Cetverokut* zauzimanjeCetverokuta(int duljina) {
- Cetverokut* polje = (Cetverokut*) malloc(duljina * sizeof(Cetverokut));
- return polje;
- }
- // Funkcija za popunjavanje koordinata pseudo-slučajnim odabirom
- void popunjavanjeKoordinata(Tocka* tocke, int duljina) {
- srand(time(NULL)); // Postavljanje seed-a za pseudo-slučajni broj generator
- for (int i = 0; i < duljina; i++) {
- tocke[i].x = rand() % 101;
- tocke[i].y = rand() % 101;
- }
- }
- // Funkcija za pseudo-slučajni odabir vrha četverokuta
- int odabirVrha(int m) {
- return rand() % m;
- }
- // Funkcija za pronalazak udaljenosti između dviju točaka
- double duljinaStranice(Tocka* t1, Tocka* t2) {
- double dx = t1->x - t2->x;
- double dy = t1->y - t2->y;
- return sqrt(dx*dx + dy*dy);
- }
- // Funkcija za računanje opsega četverokuta
- double opsegCetverokuta(Cetverokut* c) {
- double a = duljinaStranice(c->vrh1, c->vrh2);
- double b = duljinaStranice(c->vrh2, c->vrh3);
- double c1 = duljinaStranice(c->vrh3, c->vrh4);
- double d = duljinaStranice(c->vrh4, c->vrh1);
- return a + b + c1 + d;
- }
- // Funkcija za pronalazak četverokuta s najvećim opsegom
- Cetverokut* najveciOpseg(Cetverokut* cetverokuti, int dul
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement