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++ - Conversione binario decimale
Forum - C/C++ - Conversione binario decimale

Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 18:59
Martedì, 28/10/2008
ciao a tutti o trovato un codice per convertire da binario a decimale e lo modificato per problemi vari cmq non so magari nn andava neanke prima ma adesso quando lo faccio funzionare mi da conversioni errate qualcuno sa aiutarmi ecco il codice:


int nbin3;
int bin1;
int bin2;
int bin3;
cout<<"Digita il peso del numero binario";
cin>>nbin3;
bin1=1;
bin2=0;
do{
cout<<"Inseriscici Cifra";
cin>>cifra;
bin2=(cifra*bin1)+bin2;
bin1=bin1*2;
nbin3=nbin3-1;
}
while(nbin3!=0);
cout<<"Conversione binario -> decimale = "<<bin2;

grz in anticipo:k:

Ultima modifica effettuata da pierotofy il 29/10/2008 alle 14:57
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 14:58
Mercoledì, 29/10/2008
1. Che errori ti ritorna il compilatore?
2. A che riga?
3. Ambiente di sviluppo?


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 20:07
Mercoledì, 29/10/2008
nessun errore dal compilatore
ambiente di sviluppo  code::blocks
Il problema e che se inserisco 133 ad esempio nella calcolatrice di windows e lo trasformo in binario il risultato è  10000101 e se lo riconverto con questo sorgente il risultato è 161
nn so che fare...:d


PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 20:55
Mercoledì, 29/10/2008
prova questa funzione, dovrebbe funzionare

Codice sorgente - presumibilmente C#

  1. int bindec(int otto=0,int sette=0,int sei=0,int cinque=0,int quattro=0,int tre=0,int due=0,int uno=0) //questa funzione converte un numero binario in decimale, i parametri della funzione sono per default =0,
  2. {
  3.         char binario[9];
  4.         int bina[9];
  5.         int i, v=128,n=0;
  6.  
  7.         if (otto==0 && sette==0 && sei==0 && cinque==0 && quattro==0 && tre==0 && due==0 && uno==0) //se tutti i parametri sono uguale a 0 allora chiedo di inserire il numero binario da tastiera
  8.         {
  9.                 cout<<"Inserisci il numero binario : ";
  10.                 cin.getline(binario,9);
  11.                 fflush(stdin);//"pulisco" il cin
  12.  
  13.                 for (i=0;i<=7;i++)
  14.                 {
  15.                 if (binario[i]=='1')
  16.                         n=n+v;
  17.                 v=v/2;
  18.  
  19.                 }
  20.  
  21.         }
  22.  
  23.         else  //entra qui se io ho messo il numero binario quando ho richiamato la funzione
  24.         {
  25.                 bina[0]=otto;
  26.                 bina[1]=sette;
  27.                 bina[2]=sei;
  28.                 bina[3]=cinque;
  29.                 bina[4]=quattro;
  30.                 bina[5]=tre;
  31.                 bina[6]=due;
  32.                 bina[7]=uno;
  33.  
  34.                 for (i=0;i<=7;i++)
  35.                 {
  36.                 if (bina[i]==1)
  37.                     n=n+v;
  38.                 v=v/2;
  39.  
  40.                 }
  41.  
  42.         }
  43.  
  44.  
  45.         return n; //mi ritorna il numero binario convertito in decimale
  46.  
  47. }



Q: I need help, give me some pointers!
R: 0x3A28213A, 0x6339392C, 0x7363684E, ...
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:43
Mercoledì, 29/10/2008
Prova a dare un'occhiata a questo...

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7.  
  8. /*
  9. 101 = 5
  10.  
  11. 1 * (2 ^ 2) = 4
  12. 0 * (2 ^ 1) = 0
  13. 1 * (2^0) = 1
  14.  
  15. 4+0+1 = 5
  16. */
  17.  
  18. int main(){
  19.   char number[32];
  20.   char t[2];  
  21.   t[1] = '\0';
  22.  
  23.   cout << "Inserisci numero in binario: ";
  24.   cin >> number;
  25.  
  26.   int dec = 0;
  27.   for (int i = 0; i<strlen(number); i++){
  28.       t[0] = number[i];
  29.       dec += atoi((const char *)&t) * (int)pow(2,(float)strlen(number) - (i+1));
  30.   }
  31.    
  32.   cout << "In decimale: " << dec << endl;
  33.  
  34.   system("pause");
  35.  
  36.   return 0;  
  37. }



Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:44
Mercoledì, 29/10/2008
Codice sorgente - presumibilmente C++

  1. int bindec(int otto=0,int sette=0,int sei=0,int cinque=0,int quattro=0,int tre=0,int due=0,int uno=0)



Oddio, cosa vedo... pessimo stile, utilizza un'array la prossima volta.

Ultima modifica effettuata da pierotofy il 29/10/2008 alle 21:44


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 23:14
Mercoledì, 29/10/2008
ok ora funge grz mille:k::k:

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 17:36
Giovedì, 30/10/2008
Testo quotato

Postato originariamente da jaco94++:

nessun errore dal compilatore
ambiente di sviluppo  code::blocks
Il problema e che se inserisco 133 ad esempio nella calcolatrice di windows e lo trasformo in binario il risultato è  10000101 e se lo riconverto con questo sorgente il risultato è 161
nn so che fare...:d




va beh che gli altri programmi funzionano...
in ogni caso il programma postato in origine prendeva il numero binario rovesciato.
Infatti nell'esempio dato 10000101 veniva preso come 10100001.
Ciao.


Le cose si fanno per bene o non si fanno affatto
PM Quote