Título: decimal a octal Publicado por: Ander123 en 27 Agosto 2012, 14:48 pm Hola, como hago para decir que quiero que un numero x sea descompuesto entre potencias de ocho con un "do...while"
Título: Re: decimal a octal Publicado por: ecfisa en 28 Agosto 2012, 16:29 pm Hola Ander123.
No entiendo muy bién lo que buscas pero a ver si esto te sirve... Código
Saludos. Título: Re: decimal a octal Publicado por: fabianjsm en 30 Agosto 2012, 06:08 am Hola ecfisa. Estas retornando el puntero a una variable automatica! Si lo solucionas declarándola como estática sigues en problemas, porque este código fallaría:
Código
A no ser que tomes siempre la precaución de copiar el dato después de cada llamada a la función b10base_n Código
Una de las soluciones podría ser reservar memoria con malloc o retornar haciendo return strdup(res), recordando liberar la memoria después. Por eso las funciones de este tipo en C trabajan con un puntero al buffer. En C++ retornas un std::string y problema resuelto. El código no falla, esta haciendo lo que tú has programado, pero el resultado no es el deseado (error lógico) Título: Re: decimal a octal Publicado por: ecfisa en 30 Agosto 2012, 11:55 am Hola fabianjsm.
Entiendo lo que me comentas y llevas toda la razón, ¿ De este modo te parece mas correcto ? Código Pero no veo otra forma que liberar la memoria fuera de la función... Y si, usando string es muchísimo más simple. Saludos. Título: Re: decimal a octal Publicado por: leosansan en 30 Agosto 2012, 15:19 pm Ander debes currrate el código antes, lo que tienes de código es "muy flojo", con muchos errores simples. Para que no te quedes en blanco te dejo el siguiente código. Por cierto, varian BASE a 2 puedes pasar a binario u otra base:
Código: #include<stdio.h> http://es.ncalculators.com/digital-computation/decimal-octal-converter.htm (http://es.ncalculators.com/digital-computation/decimal-octal-converter.htm) Título: Re: decimal a octal Publicado por: fabianjsm en 31 Agosto 2012, 06:51 am La memoria debe ser liberada con free (incluso en C++, a no ser que modifiques tu función para que reserve memoria con new), strdup hace esto (copy paste de la libreria):
Código
Una alternativa elegante (en la librería GNU C) es strdupa (y strndupa), similar a strdup pero que asigna memoria en la pila, esto hace que no sea necesario liberar la memoria, ya que esta es liberado automáticamente al salir de la función que invocó a strdupa. Funciona sin problemas en C++, y por contraparte debes recordar no liberar la memoria ;-) Ander debes currrate el código antes Muy cierto, haber si nos muestras algún adelanto Ander123! Título: Re: decimal a octal Publicado por: ecfisa en 31 Agosto 2012, 14:16 pm Hola fabianjsm.
Citar La memoria debe ser liberada con free (incluso en C++) Obviamente, eso está fuera de toda duda. Pero me refería a que no encontre modo de liberar la memoria no siendo fuera de la función. Por ejemplo: Código La memoria se reserva en el heap ya que si se haciera en el stack el valor se perdería al retornar de la función. Es decir que no encuentro forma de encapsular la reserva/liberación de la memoria dentro de la función, ya que si se libera antes de return es claro que devuelve cualquier cosa y despues de él no tiene efecto... Saludos. |