Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/04/2010, 04:56
nestor1991ag
 
Fecha de Ingreso: abril-2010
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
binario, decimal, octal, hexadecimal

No se porque esta mal, porfavor ayuda:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

void decimalb (char n);
void decimalo (char n);
void decimalh (char n);

void main()
{
char a[100];
char i, base, convertir;

gets (a);

printf ("En que base esta?\n");
scanf ("%d", &base);

printf ("A que base la quieres convertir? (binario, octal, decimal o hexadecimal\n");
scanf("%d", &convertir);

if (base=='B')
{
decimalb(a);
}

if (base=='O')
{
decimalo(a);
}

if (base=='H')
{
decimalh(a);
}

getch();
}

void decimalb (char n)
{
int j=0, contador=0, i, decimalb=0;

for (i=99; i>=0; i++)
{
if (n[i]==1)
{
decimalb=decimalb+(n[i]+(2*contador);
contador++;
}

if (n[i]==0)
{
decimalb=decimalb+n[i]+(2*contador);
contador++;
}
}

n[0]=decimalb;
}

void decimalo (char n)
{
int j=0, contador=0, i, decimalo=0;

for (i=99; i>=0; i++)
{
if (n[i]==1)
{
decimalo=decimalo+(n[i]+(8*contador);
contador++;
}

if (n[i]==0)
{
decimalo=decimalo+n[i]+(8*contador);
contador++;
}
}

n[0]=decimalo;
}

void decimalh (char n);
{
int j=0, contador=0, i, decimalh=0;

for (i=99; i>=0; i++)
{
if (n[i]==1)
{
decimalh=decimalh+(n[i]+(16*contador);
contador++;
}

if (n[i]==0)
{
decimalh=decimalh+n[i]+(16*contador);
contador++;
}
}

n[0]=decimalh;
}





Enunciando:

Ejercicio 28: (Trabajar en casa) Diseña un programa que lea números como cadenas de caracteres, la base en la que está el número y la base a la que quiere convertir dicho número. El programa parará al leerse la cadena “***”. Se considerarán las bases 2, 8, 10 y 16. Se usará una función para realizar cada tipo de conversión. El número convertido se escribirá en pantalla desde el programa principal.

No esta hecho completamente pero me gustaria saber porque esta mal por ahora.