elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [c++] Problema con programa de Entero a Binario
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [c++] Problema con programa de Entero a Binario  (Leído 2,955 veces)
audiogalaxy.

Desconectado Desconectado

Mensajes: 24



Ver Perfil
[c++] Problema con programa de Entero a Binario
« en: 8 Septiembre 2013, 23:33 pm »

He intentado hacer un programa que convierta de Entero a Binario:

Lo que he hecho va así:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(void)
  5. {
  6. float binario[100],residuo,cociente,par,inpar;
  7. int numentero, numbinario,i,r,b;
  8.  
  9. cout<<"\t\tEscribe tu numero entero: ";
  10. cin>>numentero;
  11.  
  12. for (i=numentero;numentero>1;i--)
  13. {
  14. cociente=numentero/2;
  15. residuo=numentero%2;
  16.         if(residuo==0)
  17. {
  18. par=cociente;
  19. par=0;
  20. binario[b]=par;
  21. b++;
  22. }
  23. else
  24. {
  25. inpar=cociente;
  26. inpar=1;
  27. binario[b]=inpar;
  28. b++;
  29. }
  30. i++;
  31. }
  32. cout<<"\n\n\t\t";
  33. for(r=b;r=0;r--)
  34. {
  35. cout<<","<<binario[b];
  36. b--;
  37. }
  38. }

Lo compilo y me sale un mensaje que el programa.exe ha dejado de funcionar

¿Alguien ve el problema?


En línea

Qué sería de dios sin el Hombre.
diskontrol

Desconectado Desconectado

Mensajes: 89


RAWR!


Ver Perfil
Re: [c++] Problema con programa de Entero a Binario
« Respuesta #1 en: 9 Septiembre 2013, 02:00 am »

El código en general no tiene ningún sentido, te veo bastante liado...

Respondiendo a tu pregunta, así a simple vista, el programa peta porque se da una violación de segmento; en el primer for numentero siempre será mayor que uno por lo que cuando se repite 100 veces el indice de binario sobrepasa su zona de memoria.


En línea

Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: [c++] Problema con programa de Entero a Binario
« Respuesta #2 en: 9 Septiembre 2013, 08:22 am »

Como te comentan, tu código no tienen ningún sentido.

Te expongo algunos ejemplos:

Ejemplo 1:

Código
  1. for (i=numentero;numentero>1;i--)
  2. {
  3.  
  4.  // ...
  5.  
  6.  i++;
  7. }

Tenemos un bucle que lo inicializa en el número que introduce el usuario y se repite mientras ese número sea mayor que 1... a todo esto i lo decrementa a cada pasada ... para incrementarlo de nuevo al final del bucle.

Resultado: El bucle se repite indefinidamente si el usuario introduce un número superior a 1, además i no cambia nunca de valor después de una iteración completa. Además i no se usa en ningún momento.

Ejemplo 2:

Código
  1. if(residuo==0)
  2. {
  3.  par=cociente;
  4.  par=0;
  5.  binario[b]=par;
  6.  b++;
  7. }

Si el número es par, almacenamos en la variable "par" el cociente ( no se por qué ), inmediatamente después se almacena en "par" el valor 0, luego par SIEMPRE vale 0... y después en "binario[ b ]" se almacena "par", es decir, "0". A todo esto "b" no se ha inicializado, por lo que las probabilidades de que tenga un valor superior a 100 o inferior a 0 son muchísimas... además, dado que el bucle del ejemplo anterior no se controla... aunque b tuviese un valor inicial válido, tarde o temprano se saldría del rango 0-100.

PD.: la línea "binario[ b ] = par" es una de las que te está dando problemas de casque de la aplicación.

Ejemplo 3:

Código
  1. else
  2. {
  3.  inpar=cociente;
  4.  inpar=1;
  5.  binario[b]=inpar;
  6.  b++;
  7. }

Idéntico al ejemplo anterior, solo que en este caso inpar ( que se escribe impar ) siempre va a valer 1. "binario[ b ]=inpar" presenta la segunda vía por la que casca la aplicación ya que b sigue sin estar inicializada.

Ejemplo 4:

Código
  1. for(r=b;r=0;r--)
  2. {
  3.  cout<<","<<binario[b];
  4.  b--;
  5. }

Entiendo que aquí quieres imprimir el binario resultante... o esa es la idea. Si tu código consiguiese llegar hasta aquí simplemente no se ejecutaría.

Código
  1. for(r=b;r=0;r--)

La línea anterior se corresponde a la de un for mal montado. Básicamente estas diciendo que el bucle empieza con r=b y que debe repetirse mientras r=0... es decir, nunca.

r=0 está mal... en tal caso debería ser una comparación, es decir, r == 0. Lo que sucede en tu caso es que quieres que el bucle recorra el vector "binario", por lo que la condición que deberías haber puesto es  r >= 0. En la primera iteración, r siempre va a tener un valor superior a cero, luego r == 0 no es una condición válida en ningún caso.

Además, dado que estás haciendo un incremento de b después de guardar un valor nuevo en "binario", b apunta a un índice que no es válido, tendrías que hacer un preincremento para que b apunte a valores correctos.

Y una cosilla más es la presentación del resultado... el poner esa coma ahí hace que, si consigues corregir todo lo anterior y tu programa consigue llegar ahí te arrojará un resultado tal que:

Código:
,1,0,0,0,1,1,1,0,1,1,0,1

No se ... pero esa coma inicial creo que no pinta nada... bueno, ni esa ni ninguna, los números binarios no se representan con comas.

Conclusión

Como puedes ver tienes que pulir unas cuantas cosas. Intenta corregirlas a ver si consigues que te funcione el programa.

Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa que convierte de decimal a binario,hexadacimal y octal
Programación C/C++
dnsdirm 0 35,488 Último mensaje 25 Mayo 2011, 18:53 pm
por dnsdirm
Programa que pase un número de decimal a binario.
Programación C/C++
rayk 6 37,735 Último mensaje 2 Diciembre 2015, 01:08 am
por armando_rivas
Programa para decodificar protocolo binario
Dudas Generales
macurbano 0 2,307 Último mensaje 13 Febrero 2012, 21:58 pm
por macurbano
Duda programa JAVA al leer archivo binario
Java
LoLo2207 3 3,202 Último mensaje 15 Diciembre 2012, 20:23 pm
por LoLo2207
Ayuda con programa en C (archivo binario)
Programación C/C++
anaceci21 0 1,514 Último mensaje 28 Mayo 2013, 23:08 pm
por anaceci21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines