Foros del Web » Programación para mayores de 30 ;) » Programación General »

convertir bases

Estas en el tema de convertir bases en el foro de Programación General en Foros del Web. Hola! bueno mi problema es el siguiente, hice un programa en C q se trata de ingresar dos numeros y luego decir en que tipo ...
  #1 (permalink)  
Antiguo 16/12/2007, 12:12
 
Fecha de Ingreso: diciembre-2007
Mensajes: 4
Antigüedad: 17 años, 3 meses
Puntos: 0
convertir bases

Hola! bueno mi problema es el siguiente, hice un programa en C q se trata de ingresar dos numeros y luego decir en que tipo de bases son iguales ... en el caso que sean iguales en mas de una base, solo se debe imprimir la mas pequeña ... pero no me funciona bien ... porque ingreso los dos numeros pero me arrojan bases q no deberian ser ....

Este es mi codigo

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



double Convert(char *numero, int base);
bool VerificarNumero(char *numero, int base);
int ValorDigito(char d);

double Convertidor_base(char * n, int base)
{
int Multiplicador = 1;
int marca1, DigitoNo;
int Valor = 0;

if(!VerificarNumero(n, base))
{
return -1;
}

marca1 = strlen(n);
DigitoNo = marca1-1;

while(DigitoNo >= 0)
{
Valor += ValorDigito(n[DigitoNo])*Multiplicador;
Multiplicador *= base;
DigitoNo--;
}
return Valor;
}

bool VerificarNumero(char *n, int base) // variable booleana osea de 1 o 0 no puede guardar variables mas grandes ke que esa
{ //n=numero
int i = 0; // b=base
int v;

while(n[i])
{
v = ValorDigito(n[i]);
if(v < 0 || v >= base)
return 1;
i++;
}
return 0;
}

int ValorDigito(char d) // esto es fundamental , tambien lo tengo en mi programa
{
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;
}

main()
{
//int convert;
double base_x, base_y;
int i, j;
char x[20],y[20];
int bandera=0;
while(1) {
system("cls");
printf("Ingrese los siguientes datos ");
printf("\n---------------------------------\n\n");
printf("\nIngrese el numero para *x*:");
scanf("%s",&x);
if(x[0]=='0') // x tiene q ser distinto a cero
break;
printf("\nIngrese los numeros para *y*:");
scanf("%s",&y);
if(y[0]=='0') // y tiene q ser distinto a cero
break;

{
for(i=2;i<17;i++) // no se de cual empezarlo
{
base_x=Convertidor_base(x,i); // se guarda la conversion en x_v
for(j=2;j<17;j++) // no sé de cual empezarlo
{
base_y=Convertidor_base(y,j);// se guarda la conversion en y_v
if(base_x==base_y) // SI SON IGUALES
{

printf("\n\n\t\t\t %s *base %i* = %s *base %i*\n\n\n\n",x,i,y,j);
bandera=1;

break;
}

}
if (bandera)
break;
}
if (bandera==0)
printf("\n\n\n\t\t <::: %s no es igual a %s en cualquier base de 2..16 :::>\n\n\n\n\n",x,y);
system("pause");
}
}
}


Espero que me puedan ayudar a solucionar este problema =D Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:48.