[C] Conversione binario decimale
Ciao a tutti!
Sono alle prese con questo nuovo esercizio di programmazione in C in cui non mi tornano alcune cose. So che in internet ci sono un sacco di esempi già pronti, però ho provato a realizzarne uno io e la conversione non torna
L'utente inserisce le cifre del numero binario (in questo caso fino a 4 cifre). Il programma scambia gli elementi acquisiti ed esegue la conversione utilizzando la funzione
Ho aggiunto la funzione chiamata
Se provo ad eseguire il codice ed inserire la sequenza
Dov'è l'errore?
Grazie mille
Ciaoo!
Sono alle prese con questo nuovo esercizio di programmazione in C in cui non mi tornano alcune cose. So che in internet ci sono un sacco di esempi già pronti, però ho provato a realizzarne uno io e la conversione non torna

#include <stdio.h> #include <math.h> void scambia(int *); int main() { int binario[4], i, conv=0, pot=0, nuovo[4]; int *pi; pi = binario; printf("Inserisci i singoli numeri del codice binario uno per volta:\n"); // L'utente inserisce i singoli numeri del suo codice binario for (i=0;i<4;i++) { printf("==> "); scanf("%d", &binario[i]); // Se i numeri immessi sono diversi da 0 e 1 allora deve inserire nuovamente il numero if (binario[i]!=0 && binario[i]!=1) { i--; } } // Scambio gli elementi del vettore per riuscire a convertire correttamente il numero scambia(pi); for (i=0;i<4;i++) { nuovo[i]=binario[i]; } // Funzione di debug per verificare che lo scambio sia stato effettuato correttamente printf("\nNuovo binario inserito:\t"); for (i=0;i<4;i++) { printf("%d", nuovo[i]); } // Eseguo la conversione utilizzando la funzione pow del file <math.h> for (i=0;i<4;i++) { if (binario[i]==1) { pot = pow (2,i); conv=conv+pot; } } // Stampo il numero convertito in decimale printf("\nEcco il numero converito: %d", conv); return 0; } // Dichiaro la funzione scambio void scambia(int *p) { int temp; int i; for (i=0;i<4;i++) { temp = p[0+i]; p[i] = p[3-i]; p[3-i] = temp; } }
L'utente inserisce le cifre del numero binario (in questo caso fino a 4 cifre). Il programma scambia gli elementi acquisiti ed esegue la conversione utilizzando la funzione
pow(x,y)della libreria
math.h
Ho aggiunto la funzione chiamata
scambiaperchè altrimenti se l'utente inserisce:
1100al posto di avere 12 ottiene 3, a causa dell'ordine dei numeri nel vettore.
Se provo ad eseguire il codice ed inserire la sequenza
1100ottengo sempre 3 al posto di 12.
Dov'è l'errore?

Grazie mille
Ciaoo!
Risposte
"Atem":
Invece se non lo commenti, "fine" verrà visualizzato attaccato al tuo nome, perchè la fgets nella stringa memorizza anche "\n" come ultimo carattere.
Ovviamente intendevo dire come "penultimo" carattere visto che l'ultimo è sempre '\0'.
Una stringa è un array di caratteri che termina con '\0'.
Ciao!
Grazie mille per l'esaustiva risposta, ora provo a riscrivere il programma e vediamo cosa esce!
Grazie
Ciao
Grazie mille per l'esaustiva risposta, ora provo a riscrivere il programma e vediamo cosa esce!
Grazie
Ciao
