Esercizio No. 9 Vettori
Realizza un programma per convertire un numero binario nel corrispondente valore decimale.
Soluzione:
#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 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.
Commento all'articolo