edutecnica

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