Necesito ayuda con un programa
Lo que sucede es que pidieron que realizara un programa que convierta un numero decimal a octal hexadecimal y binario y tengo este codigo ya echo.
#include<stdio.h>
#include <iostream>
#include<stdlib.h>
#include <string.h>
int Convert(char *numero, int base);
bool VerificarNumero(char *numero, int base);
int ValorDigito(char d),op,n;
int main(int argc, char *argv[])
{
for(;;){
system("cls");
printf("nHola");
printf ("n1) Convertir a Octaln");
printf ("2) Convertir a Hexadecimal n");
printf ("3) Convertir a Binario n");
printf ("4) Salir n");
printf("nnDame tu opcion: ");
scanf("%d",&op);
switch (op){
case 1:
system("cls");
printf("Escribe el numero a convertir: ");
scanf("%d",&n);
printf ("nEl numero %d en Octal es %o",n);
break;
case 2:
system("cls");
printf("Escribe el numero a convertir: ");
scanf("%i",&n);
break;
case 3:
system("cls");
printf("Escribe el numero a convertir: ");
scanf("%i",&n);
break;
case 4:
exit (0);
break;
default:
printf ("Esa opcion no estaba en el menu n_n!!!");
break;
}//*Fin del switch*///
printf ("nn");
system ("pause");
}//*fin del for infinito*///
return 0;
}//fin del main*//
int Convert(char *numero, int base)
{
int Multiplicador = 1;
int NDigitos, DigitoNo;
int Valor = 0;
if(!VerificarNumero(numero, base))
{
return -1;
}
NDigitos = strlen(numero);
DigitoNo = NDigitos-1;
while(DigitoNo >= 0)
{
Valor += ValorDigito(numero[DigitoNo])*Multiplicador;
Multiplicador *= base;
DigitoNo--;
}
return Valor;
}
bool VerificarNumero(char *numero, int base)
{
int i = 0;
int v;
while(numero[i])
{
v = ValorDigito(numero[i]);
if(v < 0 || v >= base) return false;
i++;
}
return true;
}
int ValorDigito(char d)
{
if(d >= '0' && d <= '9') return d-'0';
if(d >= 'a' && d <= 'f') return 10+d-'a';
if(d >= 'A' && d <= 'F') return 10+d-'A';
return -1; /* Caracter prohibido */
}
pero pues no sirve auque se me falta implementar los metodos pero no se como hacerlo para que funcionen por que eh probado de varias maneras y no me da un resultado correcto espero me puedas ayudar por favor.
#include<stdio.h>
#include <iostream>
#include<stdlib.h>
#include <string.h>
int Convert(char *numero, int base);
bool VerificarNumero(char *numero, int base);
int ValorDigito(char d),op,n;
int main(int argc, char *argv[])
{
for(;;){
system("cls");
printf("nHola");
printf ("n1) Convertir a Octaln");
printf ("2) Convertir a Hexadecimal n");
printf ("3) Convertir a Binario n");
printf ("4) Salir n");
printf("nnDame tu opcion: ");
scanf("%d",&op);
switch (op){
case 1:
system("cls");
printf("Escribe el numero a convertir: ");
scanf("%d",&n);
printf ("nEl numero %d en Octal es %o",n);
break;
case 2:
system("cls");
printf("Escribe el numero a convertir: ");
scanf("%i",&n);
break;
case 3:
system("cls");
printf("Escribe el numero a convertir: ");
scanf("%i",&n);
break;
case 4:
exit (0);
break;
default:
printf ("Esa opcion no estaba en el menu n_n!!!");
break;
}//*Fin del switch*///
printf ("nn");
system ("pause");
}//*fin del for infinito*///
return 0;
}//fin del main*//
int Convert(char *numero, int base)
{
int Multiplicador = 1;
int NDigitos, DigitoNo;
int Valor = 0;
if(!VerificarNumero(numero, base))
{
return -1;
}
NDigitos = strlen(numero);
DigitoNo = NDigitos-1;
while(DigitoNo >= 0)
{
Valor += ValorDigito(numero[DigitoNo])*Multiplicador;
Multiplicador *= base;
DigitoNo--;
}
return Valor;
}
bool VerificarNumero(char *numero, int base)
{
int i = 0;
int v;
while(numero[i])
{
v = ValorDigito(numero[i]);
if(v < 0 || v >= base) return false;
i++;
}
return true;
}
int ValorDigito(char d)
{
if(d >= '0' && d <= '9') return d-'0';
if(d >= 'a' && d <= 'f') return 10+d-'a';
if(d >= 'A' && d <= 'F') return 10+d-'A';
return -1; /* Caracter prohibido */
}
pero pues no sirve auque se me falta implementar los metodos pero no se como hacerlo para que funcionen por que eh probado de varias maneras y no me da un resultado correcto espero me puedas ayudar por favor.