Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Convertir un numero Base 10 a base 8.

Estas en el tema de Convertir un numero Base 10 a base 8. en el foro de C/C++ en Foros del Web. Hola amigos. Necesito un programa lo más sencillo y básico posible. Hablando de que este es mi 2 dia trabajando con C++. Todavia no Comprendo ...
  #1 (permalink)  
Antiguo 26/04/2011, 11:25
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Convertir un numero Base 10 a base 8.

Hola amigos.


Necesito un programa lo más sencillo y básico posible. Hablando de que este es mi 2 dia trabajando con C++.

Todavia no Comprendo bien el cout<< o cin<<

yo comprendo con printf("");
__________________________________

Verán, mi duda es bastante normal para alguien como yo.

Mi algoritmo que puedo imaginar es:

Dividir el numero "n" entre 8, el residuo almacenarlo en un arreglo 'x' y el cociente será el dividendo para la siguiente divicion entre 8, el residuo lo agrego al arreglo 'x'y cociente pasará a ser el dividendo otra vez. Todo esto mientras el cociente sea >= 8



Supongo que eso me va hacer todas las diviciones necesarias, pero ahora. ¿Como guardo esos residuos de forma ordenada en un arreglo y como lo muestro con printf. ??

Ejemplo para

150 b10 ----> b8

Paso |Dividendo | Divisor | Cociente | residuo
1 .........150............8.............18.......... ..6
2............18............8..............2....... ......2


Y que me tomé el cociente de la ultima divicion despues el residuo de la ultima divicion y despues el reciduo de la penultima divicion y asi suscesivamente

226b8 ------------> 150b10


______________________________

Amigos disculpen las molestias, entenderia muy bien con un código si pueden evitar usar los subprogramas se los agradeceria mucho, tengo problemas para entenderlos. Por ello no he podido resolver mi duda con los que encuentro en internet pues son muchos.


Con subprograma me refiero a esto

Código C++:
Ver original
  1. programa( int algo, algo[]){
  2.  
  3. .......
  4. }
  5.  
  6. main(){
  7.  
  8. programa(valor,valor);
  9.  
  10. }

_______________________________

Gracias nuevamente.


____________________
EDICION:

Estaba pensando que el lugar de hacer "mientras el cociente sea >= 8" puedo hacer mejor "Mientras cociente sea != 0"

y

Paso |Dividendo | Divisor | Cociente | residuo
1 .........150............8.............18.......... ..6
2............18............8..............2....... ......2
3............2..............8..............0...... .......2

Tomando el ultimo residuo y almacenarlo como el primer numero, luego el penúltimo residuo y almacenarlo como el segundo numero, luego el antepenúltimo residuo y almacenarlo en la 3 posición, etc....


Creo que es mas claro así.

Lo que sucede es que no tengo idea como se almacenan esos numero en una variable, y mucho menos en la posición en los que los requiero.


Agradezco su ayuda amigos.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Última edición por iovan; 26/04/2011 a las 11:35
  #2 (permalink)  
Antiguo 26/04/2011, 12:13
 
Fecha de Ingreso: junio-2005
Mensajes: 93
Antigüedad: 18 años, 10 meses
Puntos: 9
Respuesta: Convertir un numero Base 10 a base 8.

necesitas hacer tu propia funcion?, ya que si no puedes utilizar la funcion itoa, aqui esta una referencia

http://www.cplusplus.com/reference/c.../cstdlib/itoa/
  #3 (permalink)  
Antiguo 26/04/2011, 12:22
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Convertir un numero Base 10 a base 8.

Esta fantastico eso,

Pero tengo que aprender a hacerlo.

estoy algo atorado en la parte para almacenar los numeros.

no se que tipo de varible se utilice para almacenarlos y tampoco como se maneje.

Ayudame con un codigo por favor.
  #4 (permalink)  
Antiguo 26/04/2011, 12:33
 
Fecha de Ingreso: abril-2011
Mensajes: 88
Antigüedad: 13 años
Puntos: 24
Respuesta: Convertir un numero Base 10 a base 8.

He escrito una pequeña función recursiva para que aprendas a hacerlo, es bastante simple.
Código C++:
Ver original
  1. int convertirOctal(int num){
  2.     int respuesta=num%8;
  3.     if (num>=8){
  4.     respuesta+=10*convertirOctal(num/8);
  5.     }
  6.     return respuesta;
  7. }
Como ves hace lo que tu describistes.
Espero que te ayude.
__________________
Foros Desarrollo de Juegos
  #5 (permalink)  
Antiguo 26/04/2011, 13:14
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Convertir un numero Base 10 a base 8.

Te lo agradesco mucho amigo, creo entender que es lo que hace, ejecuta la funcion una y otra vez mientras se siga cumpliendo la condicion num>=8. verdad.

Tengo una pregunta, es que no me compila me salen como 20 errores, al parecer todos son el mismo:

Código C++:
Ver original
  1. error de sintaxis : falta ';' delante del identificador ' '
  2. ' ' : identificador no declarado
  3. '0xa0': este car&#225;cter no se permite en un identificador

Me ayudas a compilarlo, muchas gracias amigo.
  #6 (permalink)  
Antiguo 26/04/2011, 13:25
 
Fecha de Ingreso: abril-2011
Mensajes: 88
Antigüedad: 13 años
Puntos: 24
Respuesta: Convertir un numero Base 10 a base 8.

La función no tiene errores ya que a mi me compila bien, a si que el error puede estar en el resto del código, si me lo ensañas veré lo que puedo hacer.
__________________
Foros Desarrollo de Juegos
  #7 (permalink)  
Antiguo 26/04/2011, 13:29
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: Convertir un numero Base 10 a base 8.

si es verdad lo que pasa es que salen errores al copiar y pegar. Como que copia algun caracter ascii o algo por el estilo.

Funciona muy bien, te lo agradesco mucho y el otro codigo que le diste al chico que buscaba pasar un numero en decimal a binario tambien me funciona exelente.

muchas gracias.
Ya te agregue todo el karma que pude en los 2 post, ;D

Etiquetas: numero
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 15:09.