Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - da blocco istruzioni a funzione
Forum - C/C++ - da blocco istruzioni a funzione

Avatar
Luixx (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/04/2016

Segnala al moderatore
Postato alle 14:22
Lunedì, 02/05/2016
Salve, ho questi frammenti di codice:
  
Codice sorgente - presumibilmente C++

  1. float r_add = add(a,b);
  2.   printf("A+B = %.2f \n", floorf(r_add*100) / 100);
  3.  
  4.    float r_sott = sott(a,b);
  5.    printf("A-B = %.2f \n", floorf(r_sott*100) / 100);
  6.      
  7.     float r_molt = molt(a,b);
  8.     printf("A*B = %.2f \n", floorf(r_molt*100) / 100);
  9.  
  10.     float r_div = div(a,b);
  11.     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.
    


    

PM Quote
Avatar
mariognai (Member)
Newbie


Messaggi: 10
Iscritto: 11/04/2016

Segnala al moderatore
Postato alle 15:16
Lunedì, 02/05/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 :rofl:

PM Quote
Avatar
Luixx (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/04/2016

Segnala al moderatore
Postato alle 15:52
Lunedì, 02/05/2016
guarda nel frattempo ho fatto cosi.. vedi se va bene.

Codice sorgente - presumibilmente C++

  1. void stampa_risultato(char tipo, float a , float b)
  2. {
  3.         if(tipo=='a')
  4.         {
  5.             float r_add = add(a,b);
  6.             printf("A+B = %.2f \n", floorf(r_add*100) / 100);
  7.      
  8.         }else if(tipo=='s')
  9.         {
  10.             float r_sott = sott(a,b);
  11.             printf("A-B = %.2f \n", floorf(r_sott*100) / 100);
  12.         }
  13.         else if(tipo=='m')
  14.         {
  15.             float r_molt = molt(a,b);
  16.             printf("A*B = %.2f \n", floorf(r_molt*100) / 100);
  17.         }
  18.         else if(tipo=='d')
  19.         {
  20.             float r_div = div(a,b);
  21.             printf("A/B = %.2f \n", floorf(r_div*100) / 100);
  22.         }
  23. }


e si usa cosi:
Codice sorgente - presumibilmente Plain Text

  1. 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.

PM Quote
Avatar
Luixx (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/04/2016

Segnala al moderatore
Postato alle 16:25
Lunedì, 02/05/2016
ver 2:

Codice sorgente - presumibilmente C++

  1. void stampa_risultato(char tipo, float a , float b)
  2. {
  3.     switch(tipo)
  4.     {
  5.         case 'a':
  6.         {
  7.             float r_add = add(a,b);
  8.             printf("A+B = %.2f \n", floorf(r_add*100) / 100);
  9.             break;
  10.         }case 's':
  11.         {
  12.             float r_sott = sott(a,b);
  13.             printf("A-B = %.2f \n", floorf(r_sott*100) / 100);
  14.             break;
  15.         }
  16.         case 'm':
  17.         {
  18.             float r_molt = molt(a,b);
  19.             printf("A*B = %.2f \n", floorf(r_molt*100) / 100);
  20.             break;
  21.         }
  22.         case 'd':
  23.         {
  24.             float r_div = div(a,b);
  25.             printf("A/B = %.2f \n", floorf(r_div*100) / 100);
  26.             break;
  27.         }
  28.     }
  29. }



e risolto. più/meno.

PM Quote
Avatar
AldoBaldo (Member)
Guru


Messaggi: 699
Iscritto: 08/01/2015

Segnala al moderatore
Postato alle 16:46
Lunedì, 02/05/2016
Ancor più sintetico potrebbe essere:

Codice sorgente - presumibilmente C++

  1. void stampa_risultato( char tipo, float a, float b ) {
  2.     switch(tipo) {
  3.         case 'a':
  4.             printf("A+B = %.2f \n", floorf((a+b)*100.0f) / 100.0f);
  5.             break;
  6.         case 's':
  7.             printf("A-B = %.2f \n", floorf((a-b)*100.0f) / 100.0f);
  8.             break;
  9.         case 'm':
  10.             printf("A*B = %.2f \n", floorf((a*b)*100.0f) / 100.0f);
  11.             break;
  12.         case 'd':
  13.             printf("A/B = %.2f \n", floorf((a/b)*100.0f) / 100.0f);
  14.             break;
  15.         default: ;
  16.     }
  17. }



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.
PM Quote
Avatar
Luixx (Normal User)
Newbie


Messaggi: 8
Iscritto: 04/04/2016

Segnala al moderatore
Postato alle 16:52
Lunedì, 02/05/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.

PM Quote