Título: Convertir decimal a diferentes bases Publicado por: AxelP en 6 Marzo 2015, 05:27 am Hola, tengo que hacer un programa que convierta un numero decimal dado a una base dada. Tengo hecho un código que considero está bien, pero no entiendo por qué no me da ningún resultado, y me urge que funcione, les agradecería si alguien me ayuda :P
Código: #include <stdio.h> Título: Re: Convertir decimal a diferentes bases Publicado por: rir3760 en 6 Marzo 2015, 07:19 am El primer problema con el programa es que el lenguaje es C++ (la próxima vez por favor indícalo) pero no tiene casi nada de este (solo la reserva de memoria mediante new).
En la función de conversión los cambios a realizar son: 1) Debes reducir en una unidad el contador "i" antes de procesar cada dígito. 2) Cuando el dígito este en el rango 0 .. 9 para generar el carácter correspondiente debes utilizar: Código 3) Después del bucle y antes de la sentencia de retorno debes agregar el carácter de fin de cadena con: Código
Por ultimo en la función main debes imprimir el resultado mediante printf: Código
Ya por ultimo deberías utilizar las facilidades del lenguaje, la función se puede reducir bastante, falta liberar la memoria utilizada y hay que evitar el uso de la biblioteca conio de Borland. Por favor lee el tema |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html) Un saludo Título: Re: Convertir decimal a diferentes bases Publicado por: AxelP en 7 Marzo 2015, 23:33 pm Muchas gracias! :D
Aún no tengo claro con qué podría sustituir el new char, ya que mi propósito es usar C; he leído algo sobre malloc, pero no se como usarlo. Tampoco estoy seguro de por qué se debe de usar esto: Código: resultado[j] = char('0' + n[i]); Código: resultado[j] = '\0'; En cuanto a conio, ya aprendí a no usarlo, te agradezco mucho la ayuda :D El código quedó asi: Código: #include <stdio.h> Título: Re: Convertir decimal a diferentes bases Publicado por: rir3760 en 9 Marzo 2015, 16:32 pm Aún no tengo claro con qué podría sustituir el new char, ya que mi propósito es usar C Puedes utilizar new porque utilizas un compilador de C++, revisa con cuidado su documentación para saber como compilar el código fuente como C.Tampoco estoy seguro de por qué se debe de usar esto: Porque los enteros 0, 1, 2, ... y los caracteres '0', '1', '2' ... se parecen (son enteros) pero no son los mismo (sus valores son diferentes).Código: resultado[j] = char('0' + n[i]); Para obtener los dígitos 0, 1, 2, ... en base a los caracteres '0', '1', '2', ... debes restar '0'. Para explicarlo mejor: Código: '0' - '0' == 0 Código: 0 + '0' == '0' Y esto: Porque en C una cadena es una secuencia de cero o mas caracteres seguidos del carácter '\0', este ultimo se utiliza para indicar el final de la cadena (si no lo colocas, ¿Como sabes donde termina?).Código: resultado[j] = '\0'; Ademas quisiera saber por qué en algunos char se debe poner char*, me dijeron que para que funcionara debía ponerlo, pero no se por qué. Se utiliza "char *" para declarar una variable de tipo "puntero a carácter", ese tema lo veras mas adelante junto con los arrays.Por ultimo si no tienes un curso o libro de calidad consigue uno, recomendaciones sobre ellos las puedes encontrar mediante el motor de búsqueda de los foros. Un saludo |