Forum - C/C++
- da blocco istruzioni a funzione
Luixx (Normal User)
Newbie
Messaggi: 8
Iscritto: 04/04/2016
Salve, ho questi frammenti di codice:
Codice sorgente - presumibilmente C++
float r_add = add( a,b) ;
printf ( "A+B = %.2f \n " , floorf( r_add* 100) / 100) ;
float r_sott = sott( a,b) ;
printf ( "A-B = %.2f \n " , floorf( r_sott* 100) / 100) ;
float r_molt = molt( a,b) ;
printf ( "A*B = %.2f \n " , floorf( r_molt* 100) / 100) ;
float r_div = div ( a,b) ;
printf ( "A/B = %.2f \n " , floorf( r_div* 100) / 100) ;
in uno switch .. posso convertirlo in una funzione con dei parametri , invece di ripetere tutte le volte le istruzioni.
grazie mille , aspetto risposta.
mariognai (Member )
Newbie
Messaggi: 10
Iscritto: 11/04/2016
Ciao, per me sembrerebbe inutile trasformare tutto in una funzione perchè già le istruzioni add, sott, molt e div sono funzioni con dei parametri a e b.
Spero di essere stato chiaro e utile
Luixx (Normal User)
Newbie
Messaggi: 8
Iscritto: 04/04/2016
guarda nel frattempo ho fatto cosi.. vedi se va bene.
Codice sorgente - presumibilmente C++
void stampa_risultato( char tipo, float a , float b)
{
if ( tipo== 'a' )
{
float r_add = add( a,b) ;
printf ( "A+B = %.2f \n " , floorf( r_add* 100) / 100) ;
} else if ( tipo== 's' )
{
float r_sott = sott( a,b) ;
printf ( "A-B = %.2f \n " , floorf( r_sott* 100) / 100) ;
}
else if ( tipo== 'm' )
{
float r_molt = molt( a,b) ;
printf ( "A*B = %.2f \n " , floorf( r_molt* 100) / 100) ;
}
else if ( tipo== 'd' )
{
float r_div = div ( a,b) ;
printf ( "A/B = %.2f \n " , floorf( r_div* 100) / 100) ;
}
}
e si usa cosi:
Codice sorgente - presumibilmente Plain Text
stampa_risultato('a', a,b);
per farlo a modo come potrei farlo?
Il mio scopo e ridurre le funzioni al ciclo del menu del programma principale.
ti ringrazio molto e buona giornata.
Luixx (Normal User)
Newbie
Messaggi: 8
Iscritto: 04/04/2016
ver 2:
Codice sorgente - presumibilmente C++
void stampa_risultato( char tipo, float a , float b)
{
switch ( tipo)
{
case 'a' :
{
float r_add = add( a,b) ;
printf ( "A+B = %.2f \n " , floorf( r_add* 100) / 100) ;
break ;
} case 's' :
{
float r_sott = sott( a,b) ;
printf ( "A-B = %.2f \n " , floorf( r_sott* 100) / 100) ;
break ;
}
case 'm' :
{
float r_molt = molt( a,b) ;
printf ( "A*B = %.2f \n " , floorf( r_molt* 100) / 100) ;
break ;
}
case 'd' :
{
float r_div = div ( a,b) ;
printf ( "A/B = %.2f \n " , floorf( r_div* 100) / 100) ;
break ;
}
}
}
e risolto. più/meno.
AldoBaldo (Member )
Guru
Messaggi: 699
Iscritto: 08/01/2015
Ancor più sintetico potrebbe essere:
Codice sorgente - presumibilmente C++
void stampa_risultato( char tipo, float a, float b ) {
switch ( tipo) {
case 'a' :
printf ( "A+B = %.2f \n " , floorf( ( a+ b) * 100.0f) / 100.0f) ;
break ;
case 's' :
printf ( "A-B = %.2f \n " , floorf( ( a- b) * 100.0f) / 100.0f) ;
break ;
case 'm' :
printf ( "A*B = %.2f \n " , floorf( ( a* b) * 100.0f) / 100.0f) ;
break ;
case 'd' :
printf ( "A/B = %.2f \n " , floorf( ( a/ b) * 100.0f) / 100.0f) ;
break ;
default : ;
}
}
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
Luixx (Normal User)
Newbie
Messaggi: 8
Iscritto: 04/04/2016
ok, grazie mille e ho risolto con l'ultima versione di "AldoBaldo" anche se io dove c'è a+b, ho messo add(a,b)
perché dopo con le mie funzioni matematiche faccio fare altro.
Grazie di nuovo e buona giornata.