jaco94++ (Normal User)
Expert
Messaggi: 203
Iscritto: 22/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
Ultima modifica effettuata da pierotofy il 29/10/2008 alle 14:57 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
1. Che errori ti ritorna il compilatore?
2. A che riga?
3. Ambiente di sviluppo?
|
|
jaco94++ (Normal User)
Expert
Messaggi: 203
Iscritto: 22/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...
|
|
munkaka (Member)
Pro
Messaggi: 119
Iscritto: 07/09/2008
|
prova questa funzione, dovrebbe funzionare
Codice sorgente - presumibilmente C# |
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, { char binario[9]; int bina[9]; int i, v=128,n=0; 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 { cout<<"Inserisci il numero binario : "; cin.getline(binario,9); fflush(stdin);//"pulisco" il cin for (i=0;i<=7;i++) { if (binario[i]=='1') n=n+v; v=v/2; } } else //entra qui se io ho messo il numero binario quando ho richiamato la funzione { bina[0]=otto; bina[1]=sette; bina[2]=sei; bina[3]=cinque; bina[4]=quattro; bina[5]=tre; bina[6]=due; bina[7]=uno; for (i=0;i<=7;i++) { if (bina[i]==1) n=n+v; v=v/2; } } return n; //mi ritorna il numero binario convertito in decimale }
|
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Prova a dare un'occhiata a questo...
Codice sorgente - presumibilmente C++ |
#include <iostream> #include <string> #include <cstdlib> #include <cmath> using namespace std; /* 101 = 5 1 * (2 ^ 2) = 4 0 * (2 ^ 1) = 0 1 * (2^0) = 1 4+0+1 = 5 */ int main(){ char number[32]; char t[2]; t[1] = '\0'; cout << "Inserisci numero in binario: "; cin >> number; int dec = 0; for (int i = 0; i<strlen(number); i++){ t[0] = number[i]; dec += atoi((const char *)&t) * (int)pow(2,(float)strlen(number) - (i+1)); } cout << "In decimale: " << dec << endl; system("pause"); return 0; }
|
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Codice sorgente - presumibilmente C++ |
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
|
|
jaco94++ (Normal User)
Expert
Messaggi: 203
Iscritto: 22/10/2008
|
ok ora funge grz mille
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
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...
|
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. |
|