Stamattina cazzeggiavo con C e mi sono fatto un programmino per convertire un numero binario in decimale. Questo:
Codice:
#include <stdio.h>
#define MAX 50
int main(){
int a,b,c,dec, bin_arr[MAX];
printf("\n\n CONVERTITORE BINARIO->DECIMALE (v.1.2) \n\nDigita il numero da convertire e poi scrivi 2:\n");
// Inserisce ogni cifra nel vettore, quindi anche il 2
for (a=0; bin_arr[a-1]!=2; a++) scanf("%d", &bin_arr[a]);
printf("\nQuesto è il binario: ");
// Stampa il binario senza il 2
for (b=0; bin_arr[b]!=2; b++) printf("%d", bin_arr[b]);
printf(" che in decimale è ");
dec=0;
b--;
// L'indice c aumenta mentre l'indice b (b-1) diminuisce. b fa anche da potenza
for (c=0; b>=0; c++){
dec=dec+(bin_arr[c]*potenza(2,b));
b--;
}
printf("%d\n\n", dec);
}
// Funzione potenza
int potenza (int base, int n)
{
int i, p;
p=1;
if(n==0) return 1;
else{
for (i=1; i<=n; i++) p=p*base;
return p;
}
}
Vorrei che vi focalizziate sulla prima parte, in pratica ho usato come metodo quello di riempire un vettore di 0 e 1 (dettati dall'utente) e poi agire piano piano su ogni singola cella. Il problema è che l'unico modo che ho trovato per formare il vettore è questo:
Per esempio, per mettere 010111 si deve fare: 0 - invio, 1 - invio, 0 - invio, 1 - invio, 1 - invio, 1 - invio e 2 - invio (è un modo per far capire al ciclo for che il numero è terminato).
E' ovviamente scomodo (potete provarlo compilandolo così capite meglio), come faccio per semplificarlo? Cioè l'utente potrebbe semplicemente scrivere il suo numero 010111 e questo viene "tramutato" in un vettore bin_arr[]={0,1,0,1,1,1}