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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Problema con programa conversor de decimal a binario
« en: 27 Noviembre 2013, 17:55 pm »

Buenas, tengo un ejercicio en el que me piden hacer un programa que pase de números positivos decimales a binario (incluyendo el 0), y yo he hecho esto:

Código:
//Incluimos las librerías propias y del sistema

#include <stdio.h>
#include "decBin.h"

//Declaramos las funciones

int leeNumero();
void decBin(int n);

int main()
{
  int n;
  n = leeNumero();
  if (n > 0)
    {
      decBin(n);
    }
  printf("\n");

  return 0;
}


int leeNumero()
{
  int numero;
  do
    {
      printf(T_INTRODUZCA_NUMERO);
      scanf("\n%d", &numero);
    }
  while (numero < 0);           /*Con este bucle hacemos que si el numero introducido
                                   es negativo, no lo procese y vuelva a pedirlo */


  return numero;
}

//La funcion decBin realiza la conversión decimal-binario

void decBin(int n)
{
  if (n == 0)
    printf("0");

  else if (n == 1)
    printf("1");

  else
    {
      decBin(n / 2);
      printf("%d", n % 2);
    }
}

Aquí os pongo el fichero decBin.h:

Código:
#ifndef DECBIN_H
#define DECBIN_H

#define T_INTRODUZCA_NUMERO  "Introduzca un numero no negativo: "
#define T_INTRODUZCA_NUMERO2 "Introduzca un numero: "

#endif


Me compila bien, sin avisos ni nada, y funciona bien salvo cuando le digo que me convierta el 0 en binario (qué evidentemente sigue siendo 0), lo que hace es salir del programa, ¿alguna solución?

Gracias de antemano y un saludo!


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problema con programa conversor de decimal a binario
« Respuesta #1 en: 27 Noviembre 2013, 18:08 pm »

Me compila bien, sin avisos ni nada, y funciona bien salvo cuando le digo que me convierta el 0 en binario (qué evidentemente sigue siendo 0), lo que hace es salir del programa, ¿alguna solución?
Eso sucede porque en la función main llamas a la función "decBin" solo si el numero introducido es mayor que cero:
Código
  1. n = leeNumero();
  2. if (n > 0){
  3.   decBin(n);
  4. }
  5. printf("\n");

Eso es innecesario ya que en la función "leeNumero" verificas que el numero introducido no sea negativo, sustituye el fragmento anterior por:
Código
  1. n = leeNumero();
  2. decBin(n);
  3. printf("\n");
Una vez verifiques el correcto funcionamiento del programa con ese cambio el siguiente (cambio) es eliminar la variable "n".

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Problema con programa conversor de decimal a binario
« Respuesta #2 en: 27 Noviembre 2013, 18:21 pm »

metelo en un bucle si quieres es seguir pedindo numeros :D

Segun comenta rir3760 veo una posible solucion...
Seria:
Código
  1. if (n >= 0){
  2.  decBin(n);
  3. }
  4.  

¿que os parece?  :rolleyes:
« Última modificación: 27 Noviembre 2013, 18:33 pm por vangodp » En línea

jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Problema con programa conversor de decimal a binario
« Respuesta #3 en: 27 Noviembre 2013, 18:32 pm »

Hecho, muchas gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines