Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con le funzioni
Forum - C/C++ - Problema con le funzioni

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
ciao a tutti. Ripeto che ho appena iniziato a programmare in c++ e sto vedendo adesso le funzioni.
Non riesco a capire come attribuire un determinato valore alla funzione in modo che mi restituisca un determinato valore.
Non ho alcun valore in entrata ma non so come far uscire un determinato valore dalla funzione.
Ad esempio in pascal io usavo:
Codice sorgente - presumibilmente C/C++

  1. function Ciao():integer;
  2. begin
  3.   Ciao:= 5;
  4. end;
  5.  
  6. begin
  7. (*..*)
  8. writeln(Ciao());



e in effetti mi dava in output il 5.
In c++ io ho un codice di questo genere:
Codice sorgente - presumibilmente C/C++

  1. int ecalc()
  2. {
  3.   (*...*)
  4.    while (i < 60)
  5.     {
  6.         a = a/i;
  7.         e = e + a;
  8.         i = i + 1;
  9.     }
  10. }
  11.  
  12. main()
  13. {
  14.    (*...*)
  15.    cout<<ecalc();
  16. }



Io vorrei che in output ci fosse la variabile e (che ho dichiarato double)
ma non mi dà il risultato che cerco:d

Grazie per l'aiuto anticipatamente
Saluti

Ultima modifica effettuata da il 24/02/2010 alle 14:53
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 15:25
Mercoledì, 24/02/2010
Testo quotato

Postato originariamente da a_butta:
Io vorrei che in output ci fosse la variabile e (che ho dichiarato double)
ma non mi dà il risultato che cerco:d

Grazie per l'aiuto anticipatamente
Saluti


Beh alla fine del tuo ciclo...qui:
Codice sorgente - presumibilmente C/C++

  1. while (i < 60)
  2.     {
  3.         a = a/i;
  4.         e = e + a;
  5.         i = i + 1;
  6.        /* qui */
  7.     }


scrivi:
Codice sorgente - presumibilmente C/C++

  1. return e;


ti esce così:
Codice sorgente - presumibilmente C/C++

  1. while (i < 60)
  2.     {
  3.         a = a/i;
  4.         e = e + a;
  5.         i = i + 1;
  6.         return e;
  7.     }


oppure anche fuori dal ciclo:k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:25
Mercoledì, 24/02/2010
Little ... se lo metti dentro al ciclo, il ciclo non serve piu' a nulla ... non credi?

E se viene restituito un valore double, allora il tipo va indicato per la funzione con

double ecalc()


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 19:04
Mercoledì, 24/02/2010
Testo quotato

Postato originariamente da nessuno:

Little ... se lo metti dentro al ciclo, il ciclo non serve piu' a nulla ... non credi?

E se viene restituito un valore double, allora il tipo va indicato per la funzione con

double ecalc()



Si...scusami ho sbagliato io:_doubt:...:k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 21:10
Mercoledì, 24/02/2010
continuando qui, sto cercando di fare una funzione seno secondo la serie di taylor (la trovate qui: http://it.wikipedia.org/wiki/Seno_(matematica) sulle Proprietà analitiche della funzione seno

Io ho fatto questo codice:
Codice sorgente - presumibilmente C++

  1. float seno(float alfa)
  2. {
  3.     int k,i;
  4.     k = 2;
  5.     i = 3;
  6.     while (k++ < 100)
  7.     {
  8.         if (k % 2 == 0) alfa = alfa + potric(alfa,i)/fattoriale(i);
  9.         else alfa = alfa - potric(alfa,i)/fattoriale(i);
  10.         i = i + 2;
  11.     }
  12.     return alfa;
  13. }



spiego: potric è una funzione che rende una potenza secondo potric(base,esponente). Fattoriale invece lo si capisce dal nome. Sono entrambe perfettamente funzionanti (le ho provate separatamente).

nel codice principale metto
Codice sorgente - presumibilmente Plain Text

  1. (*...*)
  2. cout<<"Angolo:  ";
  3. cin>>alfa;
  4. cout<<seno(alfa);
  5. (*...*)



Purtroppo non mi dà il risultato sperato. Ho postato il risultato nell'immagine.
Ho provato a invertire i casi in cui andasse alfa + e alfa - ma niente...:d
voi cosa suggerite?

Grazie mille





ha allegato un file: Result.JPG (23925 bytes)
Clicca qui per guardare l'immagine

Ultima modifica effettuata da il 24/02/2010 alle 21:11
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:31
Mercoledì, 24/02/2010
Ad un certo punto, il fattoriale di i supera le capacità di calcolo del sistema ...

Ultima modifica effettuata da nessuno il 24/02/2010 alle 21:38


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote