Oppure

Loading
28/10/08 17:59
jaco94++
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 29/10/08 13:57
aaa
29/10/08 13:58
pierotofy
1. Che errori ti ritorna il compilatore?
2. A che riga?
3. Ambiente di sviluppo?
Il mio blog: piero.dev
29/10/08 19:07
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

aaa
29/10/08 19:55
munkaka
prova questa funzione, dovrebbe funzionare

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

}
aaa
29/10/08 20:43
pierotofy
Prova a dare un'occhiata a questo...

#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] = 'Prova a dare un'occhiata a questo...


#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] = '{parsed_message}';
  
  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;   
}
'; 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; }
Il mio blog: piero.dev
29/10/08 20:44
pierotofy
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 29/10/08 20:44
Il mio blog: piero.dev
29/10/08 22:14
jaco94++
ok ora funge grz mille:k::k:
aaa
30/10/08 16:36
gigisoft
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.
aaa