Algoritmo area di Gauss

vedere https://it.wikipedia.org/wiki/Formula_dell%27area_di_Gauss

#include "stdio.h"
#include "stdlib.h"
#include "math.h"

typedef struct {
        float x;
        float y;
} Coordinate;

float calcola_area(Coordinate *c) {
        int nv=sizeof(c);
        int count=0;
        float sum1=0.0,sum2=0.0;
        for(;count<nv-1;count++) {
                sum1+=c[count].x*c[count+1].y;
                sum2+=c[count].y*c[count+1].x;
        }
        sum1+=c[x].x*c[0].y;
        sum2+=c[x].y*c[0].x;
        return fabsf(sum1-sum2)/2;
}

int main() {
        int count=0, nv;
        printf("Inserire il numero di vertici: ");
        scanf("%d", &nv);

        Coordinate *coordinate;
        coordinate = malloc(nv*sizeof(Coordinate));
        if(coordinate==NULL) {
                printf("Errore allocazione puntatore coordinate");
                return 1;
        }

        for(count=0;count<nv;count++) {
                printf("Inserire vertice %d: ", x);
                scanf("%f,%f", &coordinate[count].x, &coordinate[count].y);
        }

        printf("Area: %f\n", calcola_area(coordinate));
}

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...