Programa en c

Hola me gustaría si por favor pudieras mirar el siguiente código y darme alguna pista necesitaría validar la entrada para evitar el ingreo de letras y creo que me faltan parámetros en los llamados a las funciones de conversión, Muchas Gracias.
#include <stdio.h>
#include <string.h>
void hexa (unsigned long int num_dec); /* funcion para calcular la base hexadecimal */
void octa (unsigned long int num_dec); /* funcion para calcular la base octal */
void bin (unsigned long int num_dec); /* funcion para calcular la base binaria */
int main()
{
int num_dec[30]; /* variable para el numero ingresado */
char base; /* variable para la base a la que se quiere convertir*/
int i=0,n=0;
int salida[100];
do
{
printf ("\n Ingrese el numero a convertir (-1 para salir del programa): ");
scanf("%ld",num_dec);
while (num_dec='\0')
if (!(num_dec >= '0' && num_dec <= '9'))
{
printf("Error en el ingreso del numero\n");
}
i++;
printf("Ingrese la base (O para Octal, H para Hexadecimal, B para Binario): ");
fflush(stdin);
base=getchar();
switch(base)
{
case 'O':
octa(num_dec);
for(n=(i-1);n>=0;n--)
{
printf("%d",salida[n]);
}
break;
case 'H':
hexa(num_dec);
for(n=(i-1);n>=0;n--)
{
printf("%c",salida[n]);
}
break;
case 'B':
bin(num_dec);
for(n=(i-1);n>=0;n--)
{
printf("%d",salida[n]);
}
break;
default:
printf("Error en el ingreso de la base \n");
break;
}
}
while(num_dec!=-1); /* realiza el bucle hasta que se ingresa -1 */
return 0;
}
void octa(unsigned long int num_dec) /* funcion que pasa de decimal a octal */
{
int salida[100];
int i=0,n=0;
unsigned long int result;
result=num_dec;
while (result!=0)
{
salida=result%8;
result=result/8;
i++;
}
}
void bin(unsigned long int num_dec) /* funcion que pasa de decimal a binario */
{
int salida[100];
int i=0,n=0;
int result;
result=num_dec;
while (result!=0)
{
salida=result%2;
result=result/2;
i++;
}
}
void hexa(unsigned long int num_dec) /* funcion que pasa de decimal a hexadecimal */
{
char salida[100];
int i=0 , n , alfa=0;
unsigned long int result=num_dec;
while (result!=0)
{
alfa=(result%16);
switch(alfa)
{
case 10: { salida='A'; break; }
case 11: { salida='B'; break; }
case 12: { salida='C'; break; }
case 13: { salida='D'; break; }
case 14: { salida='E'; break; }
case 15: { salida='F'; break; }
default: { salida='0'+alfa; break; }
}
result=(result/16);
i++;
}
}

1 respuesta

Respuesta
1
Mmm el programa convierte un numero decimal a octal y hexzadecimal y a binario en c++ hay una forma para imprimir automáticamente de decimal ha hexa y ha octal es decir :
ingresas un numero 10 con scanf(%d);
Y a la hora de imprimirlo pones el printf("%O"); o printf("%X"); y ya lo imprime en octal espero que te sirva...
Sobre tu pregunta hay una función creo que en stdlib.h
la cual es isalpha(dato); la cual te dice si son letras
podrias poner x=scanf(dato);
if(isalpha(x)){}
Si tienes dudas escríbeme...
No se te olvide finalizarla..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas