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++ - 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: 6230
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?


Il mio blog: https://piero.dev
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. }


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
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. }



Il mio blog: https://piero.dev
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
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


Il mio blog: https://piero.dev
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: 696
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.

PM Quote