View Full Version : [c++] una function può restituire più di un output?
vermaccio
07-06-2006, 17:12
ovvero anzoche definire
double funzionemia (double input) {...}
e richiamarla con
double output;
output=unzionemia (...);
si può fare, nel caso io abbia bisogno che la mia funzione restituisca due valori
(double, double) altrafunzionemia (double input) {...}
e richiamarla con
double output1;
double output2;
(output1, output2)=altrafunzionemia(...)
?????
so che in uscita non può dare un vettore. ma due double separati?
ilsensine
07-06-2006, 17:21
Puoi restituire un oggetto complesso (struttura, classe...)
vermaccio
07-06-2006, 17:32
uffa!
quindi come al solito gli passo in ingresso il puntatore ad un array di due double e poi da detnro la funziona assegno i valori alle celle dell'array.
che noia....
le variabili di appoggio si sprecano!
double funzionemia (double input, double *output) {...}
e richiamarla con
double output[2];
output=unzionemia (..., &output[0]);
certo che è una bella limitazione!!!!!
wingman87
07-06-2006, 19:16
Puoi fare come ti ha detto ilsensine:
typedef struct mio{
double val1;
double val2;
};
struct mio funzionemia (double input) {...}
e lo richiami con
struct mio output;
output=funzionemia (...);
vermaccio
07-06-2006, 21:34
e se voglio poi asssegnare i due double della struttura a due double esterni come faccio?
double primo;
double secondo;
primo=???
secondo=???
come li assegno se voglio assegnare
primo=val1 e secondo=val2?
e se voglio poi asssegnare i due double della struttura a due double esterni come faccio?
double primo;
double secondo;
primo=???
secondo=???
come li assegno se voglio assegnare
primo=val1 e secondo=val2?Se una funzione deve restituire 2 double, a me vengono in mente 3 soluzioni:
A)
void funzione (double *pd1, double *pd2) { .. }B)
typedef struct
{
double d1;
double d2;
} DOUBLE2;
DOUBLE2 funzione (void) { .. }C)
typedef struct
{
double d1;
double d2;
} DOUBLE2;
void funzione (DOUBLE2 *pd2) { .. }
tomminno
07-06-2006, 21:52
e se voglio poi asssegnare i due double della struttura a due double esterni come faccio?
double primo;
double secondo;
primo=???
secondo=???
come li assegno se voglio assegnare
primo=val1 e secondo=val2?
Se usi il codice di wingman87:
primo = mio.val1;
secondo = mio.val2;
vermaccio
08-06-2006, 07:44
e per il caso di andbin, casi B) e C)?
da dentro la funzione come assegno valori al contenuto della struttura che ho passato alla funzione?
se ad esempio dentro la funzione voglio passare:
soluz1 al primo double della struttura
soluz2 al secondo double della struttura
in B) e C) che devo scrivere?
e nel caso B) devo mettere a fine funzione return(struttura);
?
in B) e C) che devo scrivere?Caso B)
typedef struct
{
double d1;
double d2;
} DOUBLE2;
DOUBLE2 funzione (void)
{
DOUBLE2 dbl2;
dbl2.d1 = 1.5;
dbl2.d2 = 5.5;
return dbl2;
}
int main (void)
{
DOUBLE2 dbl2;
dbl2 = funzione ();
}
Caso C)
typedef struct
{
double d1;
double d2;
} DOUBLE2;
void funzione (DOUBLE2 *pdbl2)
{
pdbl2->d1 = 1.5;
pdbl2->d2 = 5.5;
}
int main (void)
{
DOUBLE2 dbl2;
funzione (&dbl2);
}
I puntatori ci sono apposta.
Passi alla funzione 2 puntatori a double e la funzione ci scrive i risultati.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.