Quote:
Originariamente inviato da VeeJ
Un metodo sarebbe quello di continuare a dividere il numero per 10 (divisione intera) e prendere il resto della divisione (con l'operatore modulo %). Al primo passaggio otterrai le unità, al secondo le decine, ecc...
|
ottimo consiglio, ho risolto e il risultato viene, pero' vorrei migliorare l'algoritmo
Codice:
/*Algoritmo che converte un numero da base X a base 10*/
#include <stdio.h>
#include <math.h>
int baseXbase10 (int X, int B, int N);
main()
{
int base_X,z,N;
int numero_X;
printf("Inserisci la base del numero da convertire: ");
scanf("%d",&base_X);
printf("\nInserisci il numero da convertire in base 10: ");
scanf("%d",&numero_X);
printf("\nDigita quante cifre ha il numero da convertire: ");
scanf("%d",&N);
z=baseXbase10(numero_X,base_X,N);
printf("\n\nNumero convertito: %d\n",z);
}
int baseXbase10 (int X, int B, int N)
{
long int ris;
int i;
int Array[30];
ris=0;
for (i=0;i<N;i++)
{
Array[i]=X%10;
X/=10;
ris=ris+Array[i]*(int)pow(B,i);
}
return ris;
}
Vorrei evitare di inserire N da esterno (lunghezza numero) usando qualche function tipo la strlen ma non ne conosco di function per gli interi
E poi mi resta il problema che, se devo convertire un numero esadecimale, invece di A devo scrivere 10
Consigli?