Ciao a tutti 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 )
/* 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!