[C] Distanza fra due punti
Ciao a tutti f1 sono nuovo del forum e ho appena iniziato a programmare. Volevo chiedervi se qualcuno potrebbe aiutarmi con questo semplice esercizio?
Funzioni date
È dato il file "Punto2D.c", allegato alle specifiche, contenente le seguenti strutture e funzioni:
• “isZero”: valuta se un valore float è 0, o prossimo a 0, cioè se la sua distanza da 0 è minore di un errore massimo accettabile.
• “tasto”: genera un messaggio di attesa e attende che venga premuto “Invio”.
• "Punto2D": struttura che gestisce un punto sul piano a due dimensioni.
• "leggiPunto2D": legge un punto da tastiera.
Specifiche È richiesto di definire nel file suddetto le seguenti funzioni:
• "void stampa(?)": dato un punto, stampa sul video il suo valore nel formato "(x, y)".
• "? distanza2(?)": dati due punti, restituisce la loro distanza.
• "? distanzaOr(?)": dato un punto, restituisce la sua distanza dall’origine.
Mi è stato dato inoltre l'inizio dell'esercizio e io finora ho fatto la funzione stampa( forse sbagliata
)
Se mi aiutaste a definire le altre due funzioni ve ne sarei grato perche io proprio non riesco a venirne fuori
Vi ringrazio in anticipo!
Funzioni date
È dato il file "Punto2D.c", allegato alle specifiche, contenente le seguenti strutture e funzioni:
• “isZero”: valuta se un valore float è 0, o prossimo a 0, cioè se la sua distanza da 0 è minore di un errore massimo accettabile.
• “tasto”: genera un messaggio di attesa e attende che venga premuto “Invio”.
• "Punto2D": struttura che gestisce un punto sul piano a due dimensioni.
• "leggiPunto2D": legge un punto da tastiera.
Specifiche È richiesto di definire nel file suddetto le seguenti funzioni:
• "void stampa(?)": dato un punto, stampa sul video il suo valore nel formato "(x, y)".
• "? distanza2(?)": dati due punti, restituisce la loro distanza.
• "? distanzaOr(?)": dato un punto, restituisce la sua distanza dall’origine.
Mi è stato dato inoltre l'inizio dell'esercizio e io finora ho fatto la funzione stampa( forse sbagliata

/* Punto2D */ #include <stdio.h> #include <math.h> /* definizioni di costanti: */ #define EPS 0.001 /* massima tolleranza nel decidere l'uguaglianza tra float */ #define M_PI 3.14159265358979323846264338327 /* M_PI (Mio Pigreco): servirà per i calcoli sugli angoli */ typedef struct { float x, y; } Punto2D; Punto2D pEst; /* definizione di pEst come struttura esterna alle funzioni e quindi con scope (visibilità) che si estende a tutte le funzioni. Serve perché, essendo i parametri passati per valore, una funzione può restituire (con l'istruzione return) un solo valore; quando serve che ne restituisca più d'uno (in questo programma le due coordinate di un punto) si definisce una variabile struttura pEst esterna: i 2 valori che una funzione inserisce nei campi x e y di pEst sono visibili in tutto il programma */ /* Legenda per i commenti introduttivi alle funzioni IP = Input parameter; OR = Output returned; OP = Output parameter (in questa versione del programma sostituiti da pEst) IK = Input da keyboard (da tastiera) OV = Output su Video. */ /*************************************************/ /* IP x Numero da valutare se e` circa 0. IP err Errore massimo tollerato. OR Indicazione se $x e` "circa 0", cioe` se la sua distanza da 0 e` < $err. */ int isZero(float x, float err) { return fabs(x) < err; } /* isZero */ /* OV Messaggio di attesa. */ void tasto(void) { fflush(stdin); printf("Premere Invio per continuare. "); getchar(); } /* tasto */ /*************************************************/ /* IK+OR p Punto da leggere da tastiera. */ /* questa funzione deve restituire due valori, x e y: li inserisce nella struttura esterna pEst */ void leggiPunto2D(void) { float x, y; printf("Inserisci le coordinate di un punto:\n"); printf(" Inserisci la x: "); scanf("%f", &x); pEst.x=x; printf(" Inserisci la y: "); scanf("%f", &y); pEst.y=y; } /* leggiPunto2D */ /*************************************************/ /* IP p1 Primo punto. IP p2 Secondo punto. OR pM Punto medio tra $p1 e $p2. */ /* questa funzione deve restituire due valori, x e y: li inserisce nella struttura esterna pEst */ void puntoMedio(Punto2D p1, Punto2D p2) { float x, y; x= (p1.x + p2.x) / 2; y= (p1.y + p2.y) / 2; pEst.x=x; pEst.y=y; } /* puntoMedio */ /*************************************************/ /* QUA INIZIANO LE FUNZIONI CHE È RICHIESTO DI DEFINIRE. */ void stampa(Punto2D x, Punto2D y) { printf("il valore del punto è: (%f,%f)", pEst.x,pEst.y); }
Se mi aiutaste a definire le altre due funzioni ve ne sarei grato perche io proprio non riesco a venirne fuori

Vi ringrazio in anticipo!
Risposte
"ilsaggio":
io proprio non riesco a venirne fuori
Ambe funzioni distanza2 e distanzaOr sono molto facili da implementare..
Cosa non ti è chiaro e cosa hai provato a fare di tuo ?