Καλησπέρα δάσκαλε! Δεν μπορώ να κατανοήσω το scanf("%f", &p->x); Γιατι δεν το γραφουμε απλά scanf("%f", p->x); (ΜΤΦΡ : Εκει που δειχνει ο δείκτης p, στο μελος p.x.)
gia osous den tous trexei to programa sta ubuntu logo error undefined reference to sqrt' kai pow' dokimaste auto sto terminal: gcc test.c -lm (opou test to name tou file) ./a.out logika meta tha treksei kanonika
Στην πρώτη συνάρτηση θέλουμε να τροποποιείται το όρισμα στη συνάρτηση: Με το πέρας της, η τιμή του ορίσματος θα έχει αλλάξει, θα έχει μπει μία νέα τιμή Στην δεύτερη συνάρτηση, τα ορίσματα δεν πρόκειται να τροποποιηθούν, απλά θα διαβάσουμε την τιμή τους και θα κάνουμε κάτι με αυτές τις τιμές [Υπενθύμιση: Στο μάθημα 8 (δείκτες) είδαμε τη σημαντική διαφορά του να διοχετεύουμε ένα όρισμα μέσω τιμής και μέσω δείκτη -> κάνε του μια επανάληψη]
Η return επιστρέφει μία τιμή. Για να επιστρέψεις δύο τιμές, είτε τις ομαδοποιείς σε μια δομή και επιστρέφεις μια μεταβλητή δομής, είτε επιστρέφεις μέσω δείκτη παραπάνω τιμές (βλ. μαθ.8)
/*ευκλειδια αποσταση σημειων 1ος τροπος*/ # include # include /*δομη που να περιχει τις συντνες ενος σημειου*/ typedef struct simeio{ float x,c; }point; point load(point); float range(point,point); main() { point qwe,asd; printf("1o simeio: "); qwe=load(qwe);
} /*συναρτηση που παιρνει σαν ορισμα μεταβλητη δομης διαβαζει και επιστερεφει δεδομενα*/ point load(point jkl) { printf("dose x "); scanf("%f",&jkl.x);
printf("dose y "); scanf("%f",&jkl.c);
return jkl; } /*παιρνει 2 σημεια και αρα 2 Point και επιστρεφει την αποσταση τους*/ float range(point k,point m) { float iop; iop=sqrt(pow((k.x-m.x),2)+pow((k.c-m.c),2)); return iop; }
Καλησπέρα δάσκαλε! Δεν μπορώ να κατανοήσω το scanf("%f", &p->x); Γιατι δεν το γραφουμε απλά scanf("%f", p->x); (ΜΤΦΡ : Εκει που δειχνει ο δείκτης p, στο μελος p.x.)
gia osous den tous trexei to programa sta ubuntu
logo error undefined reference to sqrt' kai pow'
dokimaste auto sto terminal:
gcc test.c -lm (opou test to name tou file)
./a.out
logika meta tha treksei kanonika
μπορείτε να μου εξηγήσετε γιατί στην δεύτερη συνάρτηση δεν βάλαμε (struct *A, struct *B) όπως κάναμε και στην πρώτη συνάρτηση;
Στην πρώτη συνάρτηση θέλουμε να τροποποιείται το όρισμα στη συνάρτηση: Με το πέρας της, η τιμή του ορίσματος θα έχει αλλάξει, θα έχει μπει μία νέα τιμή
Στην δεύτερη συνάρτηση, τα ορίσματα δεν πρόκειται να τροποποιηθούν, απλά θα διαβάσουμε την τιμή τους και θα κάνουμε κάτι με αυτές τις τιμές
[Υπενθύμιση: Στο μάθημα 8 (δείκτες) είδαμε τη σημαντική διαφορά του να διοχετεύουμε ένα όρισμα μέσω τιμής και μέσω δείκτη -> κάνε του μια επανάληψη]
@@psounis γιατί δεν βάλαμε double στο πρόγραμμά μας και βαλαμε float?
μπορω μέσω return να επιστρέψω στήν πρώτη συνάρτηση και τις 2 συντεταγμένες?
Η return επιστρέφει μία τιμή. Για να επιστρέψεις δύο τιμές, είτε τις ομαδοποιείς σε μια δομή και επιστρέφεις μια μεταβλητή δομής, είτε επιστρέφεις μέσω δείκτη παραπάνω τιμές (βλ. μαθ.8)
@@psounis σας ευχαριστω πολυ!
/*ευκλειδια αποσταση σημειων 1ος τροπος*/
# include
# include
/*δομη που να περιχει τις συντνες ενος σημειου*/
typedef struct simeio{
float x,c;
}point;
point load(point);
float range(point,point);
main()
{
point qwe,asd;
printf("1o simeio:
");
qwe=load(qwe);
printf("2o simeio: ");
asd=load(asd);
printf("h apostash tvn 2 shmeivn einai %f",range(qwe,asd));
}
/*συναρτηση που παιρνει σαν ορισμα μεταβλητη δομης διαβαζει και επιστερεφει δεδομενα*/
point load(point jkl)
{
printf("dose x ");
scanf("%f",&jkl.x);
printf("dose y ");
scanf("%f",&jkl.c);
return jkl;
}
/*παιρνει 2 σημεια και αρα 2 Point και επιστρεφει την αποσταση τους*/
float range(point k,point m)
{
float iop;
iop=sqrt(pow((k.x-m.x),2)+pow((k.c-m.c),2));
return iop;
}