Programa que pase un número de decimal a binario.

Iniciado por rayk, 30 Junio 2011, 19:57 PM

0 Miembros y 1 Visitante están viendo este tema.

rayk

Hola quería saber si alguien me podría echar una mano con este código de programacón. El programa lo que hace es pasar un número en el sistema decimal al binario. Lo he hecho cogiendo los restos de las sucesivas divisiones entre dos y el último cociente, pero solo consigo mostrarlos por pantalla en el orden en el que voy consiguiendo los unos y ceros, por lo que el numero en binario esta al reves (leido de derecha a izquierda).

pongo lo que llevo de codigo:

#include <stdio.h>
#include <stdlib.h>
// Pasar un número de decimal a binario.
int main()
{
    int numero, c, r;
    scanf("%d", &numero);
    c=numero/2;
    while(c>1)
    {         
              r=numero%2;
              printf("%d", r);   
              c=numero/2;
              numero=c;         
    }
    printf("%d", c);
    system("pause");
}

тαптяα

porque no lo haces mas simple?

void binary(int number) {
int remainder;

if(number <= 1) {
cout << number;
return;
}

remainder = number%2;
binary(number >> 1);
cout << remainder;
}


Eso es lo facil

para arreglar lo tuyo, tendriamos que coger la cadena de numeros y darle la vuelta a base de punteros y un for. No tiene mucho misterio pero bueno..

rayk

Estoy intentando entender el codigo que has puesto pero como he empezado hace poco hay algunas cosas que no comprendo.las cosas que no entiendo son:

void binary(int number)

¿qué es cout?

y el simbolo <<

te agradeceria si me lo explicases un poco. Saludos y gracias.

PD. se me olvido decir que esta en lenguaje c, no se si lo que has puesto es c o c++

тαптяα

C++

te dejo el code completo por si acaso.


solo sirve para numeros mayores que 1.

#include <iostream>

using namespace std;

void binary(int number) {
int remainder;

if(number <= 1) {
cout << number;
return;
}

remainder = number%2;
binary(number >> 1);
cout << remainder;
}

int main() {
int number;

cout << "Introduce un numero entero: ";
cin >> number;
if (number < 0){
return main();
}


else {
cout << "Binario: ";
binary(number);
cout << endl;
}
}




rayk

Vale, ya decia yo que habia algunas cosas que no entendia y es porque esta en c++.
Si hay alguien que me pueda decir como hacerlo en c, siguiendo mi codigo o con otro que llegue a la solucion de maner más fácil, se lo agradeceria. Saludos

тαптяα

Cambia, cout por printf y cin por scanf

Las librerias requeridas..

y quiita el "std" y punto jaja

armando_rivas

aqui hice un codigo recursivo para retornar el binario como entero

int Abin(int numero){
if(numero/2<1){
    return numero%2;
}else{
    return (Abin(numero/2)*10)+numero%2;
}   
}

si le encuentran alguna falla me pueden avisar