gradi celsiu-farenheit

funzione ricorsiva(in c++) per convertire i due tipi di gradi

« Older   Newer »
 
  Share  
.
  1.  
    .
    Avatar

    Member

    Group
    Member
    Posts
    206

    Status
    Offline
    ho provato a fare un programma(traccia d'esame di qualche mese fa) che converta,tramite una funzione ricorsiva, gradi celsius in farenheit o viceversa a seconda della scelta dell'utente...il programma parte,ma da risultati sballati..dove sbaglio???
    per favore help..
    il programma scritto da me è questo:
    CODICE
    #include <cstdlib>
    #include <iostream>
    #include <iomanip>
    #include <math.h>


    using namespace std;
    double converti(double celsius,double far){
         
       
      { far=((5/9)*celsius) + 32;  
       return far;
          }

         
         
      {celsius=((far-32))*(9/5);
      return celsius;    
      }

    }





    int main()
    {
      bool scelta;
     double celsius;
     double far;
     cout<<"Convertire °F in °C o viceversa?(°F-°C=1; °C-°F=0;)"<<endl;
     cin>>scelta;
     
     
     if(scelta=1){
       cout<<"Inserire una temperatura in gradi farenheit"<<endl;
     cin>>far;
     
     cout<<celsius<<" °F ="<<converti(celsius,far)<<" °C"<<endl;            
                 
                 
                  }
     
     
     else{
     cout<<"Inserire una temperatura in gradi celsius"<<endl;
     cin>>celsius;
     
     cout<<celsius<<" °C ="<<converti(celsius,far)<<" °F"<<endl;
    }
       
       return 0;
     
    }


    ditemi qual'è l'errore,grazie???è urgente per favore....
     
    Top
    .
  2.  
    .
    Avatar

    Member

    Group
    Member
    Posts
    206

    Status
    Offline
    l'ho modificato e ora parte,ma quando scelgo di convertire farenheit in celsiu va bene,mentre nell altro caso mi "sballa"..perchè??
    CODICE
    #include <cstdlib>
    #include <iostream>
    #include <iomanip>
    #include <math.h>


    using namespace std;
    double converti1(double celsius){
         
       double far;
      far=((1.8)*celsius) + 32;  
       return far;
          }

     double converti2(double far) {    
         
      double celsius;
      celsius=((far-32))*(1.8);
      return celsius;    
      }







    int main()
    {
      bool scelta;
     double celsius;
     double far;
     cout<<"Convertire °F in °C o viceversa?(°F-°C=1; °C-°F=0;)"<<endl;
     cin>>scelta;
     
     
     if(scelta=1){
       cout<<"Inserire una temperatura in gradi farenheit"<<endl;
     cin>>far;
     
     cout<<far<<" °F ="<<converti2(far)<<" °C"<<endl;  
               
                 
                 
                  }
     
     
      else {
     cout<<"Inserire una temperatura in gradi celsius"<<endl;
     cin>>celsius;
     
     cout<<celsius<<" °C ="<<converti1(celsius)<<" °F"<<endl;
     
    }
       
     
       return 0;
     
    }
     
    Top
    .
  3. Guglielmoqwerty
     
    .

    User deleted


    Ecco qui:
    CITAZIONE (aaa123 @ 12/12/2013, 13:03)
    CODICE
    double converti1(double celsius){      
       double far;
      far=((1.8)*celsius) + 32;  
       return far;
          }

    Per trasformare da celsius tu fai
    f = (1,8*c)+32
    CITAZIONE
    CODICE
    double converti2(double far) {    
         
      double celsius;
      celsius=((far-32))*(1.8);
      return celsius;    
      }

    E per trasformare in Fahrenheit fai
    c=(far-32)*1.8

    Dal punto di vista matematico non ha senso, perchè usando le proprietà delle equazioni da f = (1,8*c)+32 non puoi ottenere c=(far-32)*1.8 Semplicemente hai sbagliato perchè moltiplichi per 1.8 i f-32 invece di dividere. La formula corretta per il procedimento inverso è: °C = (°F − 32) / 1,8

    tranquillo, è solo un errore di distrazione ;)
     
    Top
    .
  4.  
    .
    Avatar

    Member

    Group
    Member
    Posts
    206

    Status
    Offline
    ok,ma apparte la distrazione,prova a compilare il mio programma,quando scelgo di convertire celsius in farehneit mi escono cose sballate sullo schermo....prova e poi dimmi

    se scelgo di convertire far in celsius tutto ok,digito 1(come scelta),inserisco i far e mi restituisce i celsius..se faccio viceversa(scelta 0) invece mi esce sempre di mettere i gradi farenheit..e qui l'errore..come lo correggo?
     
    Top
    .
  5. Guglielmoqwerty
     
    .

    User deleted


    Non ho il compilatore mi dispiace :(
    E se devo essere sincero di C so poco, comincio a natale ;)
    Prima ti ho aiutato perchè l'errore era ovvio (quello) mentre questo che mi dici tu adesso on mi sembra possibile perchè in entrambi i casi compi le stesse operazioni...

    Comunque ti do un piccolo consigli. Non serve che controlli che scelta sia uguale ad 1 perchè in C 1 equivale già a vero (come tutti i numeri diversi da zero). Quindi basta mettere
    if(scelta) //codice
    else //altro codice

    L'unico cambiamento lo hai per i casi non previsti (se l'utente mette per esempio 5). Nel primo caso scelta è diverso da 5 e quindi viene eseguito l'"else", nel secondo caso 5 vale true (perché non è 0) e viene eseguito il primo ;)

    EIT:
    Aspetta, ho notato una piccola cosa. Nell'if del sorgente c'è scritto scelta=1 ? Perchè mi sa che l'errore è lì. = è l'operatore di assegnamento, == quello di confronto. Quindi tu in ogni caso esegui l'if perchè scelta vale sempre 1 che non è 0 etc etc (cedi sopra)
     
    Top
    .
  6.  
    .
    Avatar

    Member

    Group
    Member
    Posts
    206

    Status
    Offline
    l'errore l'avevo già trovato ma grazie della risposta lo stesso...l'errore era proprio l'aver messo= nell if invece di ==

    P.S.
    CITAZIONE (Guglielmoqwerty @ 12/12/2013, 15:40) 
    Non ho il compilatore mi dispiace :(
    E se devo essere sincero di C so poco, comincio a natale ;)

    questo non è C...è C++
     
    Top
    .
  7.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    E' sempre lo stesso tipo di errore, ricorda che come in matematica = è un assegnamento. ;)
     
    Top
    .
  8.  
    .
    Avatar

    Member

    Group
    Member
    Posts
    206

    Status
    Offline
    si root faccio sempre lo stesso errore,è vero..è che proprio faccio fatica con = ed ==,ho capito la storia dell'assegnamento ma comunque faccio spesso confusione...come si dice da me a pratic spratic(la pratica spratica),più si fa una cosa e meglio la i fa(programmare in c++ in questo caso)....comunque spero che ettimana prossima finisca sto supplizio,e passi quest'esame del kaiser..già odiavo prima l'informatica,ma ora sono all'esaperazione...a schif c o cor(la odio col cuore)....
     
    Top
    .
  9.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Questa è programmazione però, non informatica. Insomma, è un campo molto vasto l'Informatica, potresti anche trovare qualcosa che ti piace.
     
    Top
    .
  10.  
    .
    Avatar

    Member

    Group
    Member
    Posts
    206

    Status
    Offline
    CITAZIONE (RootkitNeo @ 12/12/2013, 18:43) 
    Questa è programmazione però, non informatica. Insomma, è un campo molto vasto l'Informatica, potresti anche trovare qualcosa che ti piace.

    la vedo dura,a me il pc in generale fa cag.re....oltre a usarlo per chattare su fb con la mia ragazza,vedere qualche telefilm e giocare a poker(che preferisco dal vivo,ma quando capita non disdegno giocare online) non lo uso per niente..figurati che non ho nessun videogame a casa,e oltre a usarlo per telefonare uso pochissimo anche il cellulare..sin da piccolo ho preferito la vita reale a quella virtuale,sono cresciuto per strada,e star davanti a uno schermo mi fa uscir scemo......la tecnologia mi piace,ma preferisco altre cose...con informatica io parlo di tutto ciò che concerne i pc(ergo anche la programmazione)...finito quest'esame tranne per lavoro o per eventuali evenienz,io e il pc torniamo degli estranei,ci "vediamo solo lo stretto necessario"..spero che con questa mia spiegazione capisca il perchè del mio astio verso il tuo mondo(quello del pc intendo)...sei gentile in tutti i post che apro,e ti ringrazio,ma,parafrasando una canzone di venditti, " l'informatica non sarà mai il mio mestiere"(lì dice la matematica,ma nel mio caso la matematica in parte lo sarà...)
    detto ciò,i gusti son gusti..a me fa pena l'informatica a te(e tutti quelli su questo forum) invece piace..io preferisco altre cose,le mie passioni sono altre:le donne,il calcio,i film,il poker,etc...ma non certo il mondo dei pc....



    buona serata root
     
    Top
    .
  11.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    CITAZIONE (aaa123 @ 12/12/2013, 19:41) 
    la vedo dura,a me il pc in generale fa cag.re....

    Ah bhe, allora questa è un altra storia. ;)

    A me fanno cagare i motori, che siano motorini, moto, o auto. E come conseguenza mi fa anche cagare guidare l'auto, infatti guido il meno possibile. lol
     
    Top
    .
  12.  
    .
    Avatar

    Member

    Group
    Member
    Posts
    206

    Status
    Offline
    CITAZIONE (RootkitNeo @ 12/12/2013, 23:20) 
    CITAZIONE (aaa123 @ 12/12/2013, 19:41) 
    la vedo dura,a me il pc in generale fa cag.re....

    Ah bhe, allora questa è un altra storia. ;)

    A me fanno cagare i motori, che siano motorini, moto, o auto. E come conseguenza mi fa anche cagare guidare l'auto, infatti guido il meno possibile. lol

    bhe allora siamo agli antipodi:a te piace ciò che a me fa pena(l'informatica) e viceversa..io adoro i motori(ho scelto ing. meccanica perchè il mio sogno è lavorare alla ferrari,ma è un sogno,se viene bene,altrimenti posso anche "volare più basso")..a me guidare piace molto e mi rilassa,e posso assicurarti che a napoli il traffico non scherza..qui da noi il codice della strada per molti è un optional...ma nonostante ciò a me guidare rilassa molto i nervi...

    la vita è bella perchè è varia,e nonostante le nostre differenze mi stai aiutando lo stesso e,anche se non ci conosciamo,ti ritengo un amico(o una specie ;) )e va bene così quindi ;)
     
    Top
    .
  13. Guglielmoqwerty
     
    .

    User deleted


    Ehi, e io? :P

    CITAZIONE (aaa123 @ 12/12/2013, 15:50)
    l'errore l'avevo già trovato ma grazie della risposta lo stesso...l'errore era proprio l'aver messo= nell if invece di ==

    P.S.
    CITAZIONE (Guglielmoqwerty @ 12/12/2013, 15:40) 
    Non ho il compilatore mi dispiace :(
    E se devo essere sincero di C so poco, comincio a natale ;)

    questo non è C...è C++

    Appunto, questo è il mio livello ^^
    Comunque credo di aver capito che la differenza fra C e Anione doppio di Carbioni è il "uses namespace" etc etc
     
    Top
    .
  14.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Concordo aaaa123. ;)


    Tra C e C++ ci sono differenze molto importanti, tanto che i linguaggi vengono definiti diversi.
     
    Top
    .
  15. Guglielmoqwerty
     
    .

    User deleted


    No, ok. Fin qui ci arrivo. Intendevo: non vedendo le classi come in Java direi che un punto di riferimento per capire se il programma è C o C++ (per adesso) è vedere se all'inizio è presente quella riga :)
     
    Top
    .
16 replies since 12/12/2013, 12:35   218 views
  Share  
.