1 /*
2 Pseudocódigo dec_a_base:
3 verificar que la base esté en el rango correcto
4 Si el número es negativo extraer el signo
5 Mientras el número sea distinto de cero
6 extraer una cifra como el resto de la división por base
7 dividir el número por base, quedándose con el entero
8 agragar la cifra al resultado, para la potencia correspondiente de 10
9 Fin Mientras
10 Devolver resultado con signo correcto
11
12 Pseudocódigo base_a_dec: (casi igual al anterior, intercambiando 10 con base)
13 Chequear que la base esté en el rango correcto
14 Si el número es negativo extraer el signo
15 Mientras el número sea distinto de cero
16 extraer una cifra como el resto de la división por 10
17 verificar que la cifra sea consistente con la base
18 dividir el número por 10, quedándose con el entero
19 agragar la cifra al resultado, para la potencia correspondiente de base
20 Fin Mientras
21 Devolver resultado con signo correcto
22 */
23
24 #include <stdio.h>
25
26 int dec_a_base (int numdec, int base);
27 int base_a_dec (int numbase, int base);
28
29 int main()
30 {
31 int nd,b,nb;
32
33 printf("Ingrese un numero: ");
34 scanf("%d",&nb);
35 printf("Ingrese su base: ");
36 scanf("%d",&b);
37
38 nd = base_a_dec(nb,b);
39 printf("En decimal es: %d\n" , nd);
40
41 nb = dec_a_base(nd,b);
42 printf("En base %d es: %d\n" ,b, nb);
43
44 return 0;
45 }
46
47 int base_a_dec (int numbase, int base)
48 {
49 int cifra, potbase=1, numdec=0, sig=1;
50
51 if (numbase<0)
52 {
53 sig = -1;
54 numbase *= sig;
55 }
56
57 if (base < 2 || base > 9)
58 {
59 printf("Base fuera del rango permitido (2-9)\n");
60 exit(1);
61 }
62
63 while (numbase)
64 {
65 cifra = numbase%10;
66 if (cifra >= base)
67 {
68 printf("El número no correponde a la base\n");
69 exit(1);
70 }
71 numbase/=10;
72 numdec+= potbase*cifra;
73 potbase*=base;
74 }
75
76 return sig * numdec;
77 }
78
79
80 int dec_a_base (int numdec, int base)
81 {
82 int cifra, potbase=1, numbase=0, sig=1;
83
84 if (numdec<0)
85 {
86 sig = -1;
87 numdec *= sig;
88 }
89
90 if (base < 2 || base > 9)
91 {
92 printf("Base fuera del rango permitido (2-9)\n");
93 exit(1);
94 }
95
96 while (numdec)
97 {
98 cifra = numdec%base;
99 numdec/=base;
100 numbase+= potbase*cifra;
101 potbase*=10;
102 }
103
104 return sig * numbase;
105 }
syntax highlighted by Code2HTML, v. 0.9.1