View Full Version : Estrazione singolo decimale da un intero...
...qualcuno sà dirmi come estrarre i singoli decimali da un intero.... praticamente con l'algoritmo sotto devo convertire un intero da base 2 a base 10....e il numero ottenuto in base 10 lo devo scomporre in singoli decimali e metterli in un array di carattere...come si fà??? :confused: :confused: :help: :help: :cry:
#include <stdio.h>
int conv_in_dec (int num2);
void main(){
int num,dec;
printf("Introduci un numero naturale binario:\n");
scanf("%d",&num);
dec = conv_in_dec (num);
printf("In decimale equivale a %d.\n",dec);
}
//funzione conversione da binario a decimale
int conv_in_dec (int num2)
{
int pot2 = 1;
int num_10 = 0;
while (num2>0){
num_10 = num_10 + (num2%10)*(pot2);
num2 = num2 / 10;
pot2 = 2*pot2;
}
return num_10;
}
Ziosilvio
22-09-2005, 10:31
qualcuno sà dirmi come estrarre i singoli decimali da un intero
Basta usare in maniera furba l'aritmetica modulare.
con l'algoritmo sotto devo convertire un intero da base 2 a base 10
Cioe': devi ottenere in output la scrittura in base 10 di un intero che e' stato fornito in base 2 in fase di input.
il numero ottenuto in base 10 lo devo scomporre in singoli decimali e metterli in un array di carattere
Ricorati che, se n = 10x + y e' un intero positivo, allora y = n % 10 e x = n / 10.
Applica il numero di volte che ti serve... ;)
void main(){
main deve essere di tipo int.
Qualsiasi manuale vero di C spiega che main deve essere di tipo int.
Ogni dichiarazione di main come avente tipo diverso da int non e' ne' standard ne' portabile.
printf("Introduci un numero naturale binario:\n");
scanf("%d",&num);
"%d" e' il formattatore che dice a scanf che la porzione successiva della sequenza di input rappresenta un intero in notazione decimale.
Devi scrivere una funzione che legge un intero in notazione binaria: lo puoi fare con getchar e con il trucco che ti ho detto prima (con 2 al posto di 10).
//funzione conversione da binario a decimale
int conv_in_dec (int num2)
{
int pot2 = 1;
int num_10 = 0;
while (num2>0){
num_10 = num_10 + (num2%10)*(pot2);
num2 = num2 / 10;
pot2 = 2*pot2;
}
return num_10;
}
Questa funzione non ti da' la scrittura decimale del numero rappresentatio dalla sequenza binaria X, ma il numero che ottieni leggendo X come se fosse un numero binario anziche' decimale: il che e' privo di senso, perche' in X possono comparire cifre che non sono 0 o 1.
Basta usare in maniera furba l'aritmetica modulare.
Cioe': devi ottenere in output la scrittura in base 10 di un intero che e' stato fornito in base 2 in fase di input.
Ricorati che, se n = 10x + y e' un intero positivo, allora y = n % 10 e x = n / 10.
Applica il numero di volte che ti serve... ;)
main deve essere di tipo int.
Qualsiasi manuale vero di C spiega che main deve essere di tipo int.
Ogni dichiarazione di main come avente tipo diverso da int non e' ne' standard ne' portabile.
"%d" e' il formattatore che dice a scanf che la porzione successiva della sequenza di input rappresenta un intero in notazione decimale.
Devi scrivere una funzione che legge un intero in notazione binaria: lo puoi fare con getchar e con il trucco che ti ho detto prima (con 2 al posto di 10).
Questa funzione non ti da' la scrittura decimale del numero rappresentatio dalla sequenza binaria X, ma il numero che ottieni leggendo X come se fosse un numero binario anziche' decimale: il che e' privo di senso, perche' in X possono comparire cifre che non sono 0 o 1.
GRAZIE....per la grande spiegazione.... :D :D :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.