Esercizio 9
Realizza un programma per convertire un numero binario nel corrispondente valore decimale.
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
const int n=10;
main(){
//n=numero di bit della parola binaria
//num=risultato in decimale
int j=0,num=0,i,lg;
//dichiaro stringa e vettore
char s[n]; int T[n]={0,0,0,0,0,0,0,0,0,0};
//acquisizione della stringa s
cin>>s;
//lg=numero di caratteri della stringa
lg=strlen(s);
cout<<"stringa lunga:"<<lg;
//conversione della stringa in vettore di interi
for(i=0;i<lg;i++){
//48 è il codice ASCII corrispondente allo
0
if((int)s[i]==48) T[i]=0;
else T[i]=1;
}
cout<<endl<<"vettore degli interi:";
//stampo il vettore degli interi
for(i=0;i < lg;i++)cout << T[i];
/* composizione del numero decimale basandosi sui
valori memorizzati nel vettore di interi */
for(i=lg-1;i>=0;i--){
num+=T[i]*pow(2,j);
j++;
}//fine for
//in output il numero decimale trovato
cout<<endl<<num;
}//fine main
Il programma non fa altro che convertire la stringa inserita da tastiera
in un vettori di 10 interi, sempre che lg<10 (lunghezza
della stringa immessa) le posizioni non utilizzate nel vettore (sempre nella
parte destra) rimangono impostate a 0.
Poi avremo il problema di realizzare l'algoritmo che realizza l'operazione:
dove i coefficienti bi sono i bit (0 o 1) che compongono il numero binario.
Quest'ultima operazione viene eseguita dal ciclo for
(inverso) .
for(i=lg-1;i>=0;i--){...}
dove ad ogni giro la variabile accumulatore num viene
incrementata della i-esima potenza pesata del 2