Programa pasar a binario!

Iniciado por joseh94, 15 Noviembre 2014, 15:54 PM

0 Miembros y 2 Visitantes están viendo este tema.

joseh94

Hola de nuevo a todos compañeros!

Os comento, tengo que hacer un ejercicio que trata de hacer un programa en C, que obtenga un número aleatorio entre 0 y 255 y devuelva un vector de caracteres que contenga la conversion a binario de dicho número, y aparte, mostrar en pantalla los milisegundos que tarda. ¿Alguien me podría echar una mano?

Un saludo a todos! y gracias de antemano por vuestro tiempo!

Miky Gonzalez

Primero antes de nada quiero decir que lo siguiente es mi opinión aunque creo que más gente la apoyará:

No puedes venir y soltar el ejercicio que te mandaron hacer para que otros lo hagan por ti. Publica un código, si tienes duda publica el código, da una pregunta o varias pero que sean concretas, esto es:

¿Cómo puedo hacer para que se obtenga un número aleatorio de 0-255?
¿Cómo puedo obtener un vector que contenga la conversión binaria de un número de tamaño 1 byte?
¿Cómo puedo cronometrar los milisegundos que tarda un proceso en la ejecución?

Saludos, suerte con tu ejercicio. Te recomiendo leer usos de la librería básica.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

joseh94

Está muy bien eso que dices miky, pero yo me refería a que si alguien me daría alguna indicación sobre como hacerlo, no he pedido el código entero. Yo había pensado en primero sacar el número de divisiones (restos) que se le puede aplicar al número y sumarle el último cociente y con ese número ya crear un vector de ese tamaño, pero nose muy bien como he de seguir ya que si recorro el vector y voy dividiendo, el número en binario me saldría al revés.

¿Alguien que me diga una idea sobre la que trabajar?


Miky Gonzalez

#3
Para pasar un número en base décimal (indiquémoslo con [10]) éste se va diviendo por 2 (base binaria) hasta que el resto es 0. El resto de cada cifra binaria colocada haciendo el total del número binario. Esto es:


Puedes empezar por este código:

#include <stdio.h>

int main(int argc, char **argv) {
char num_binario[9] = {'-', '-', '-', '-', '-', '-', '-', '-', '-'};
char num = 79; // esto es que alcanza valores desde -128, 127

// realizar conversión binario automático
char bucle_i, resto, resultado = num;
num_binario[8] = '\0'; // para imprimirlo como cadena
for(bucle_i = 7; resultado != 0; bucle_i--) {
resto = resultado % 2;
resultado /= 2;
num_binario[bucle_i] = resto + '0';
}

printf("num_binario = %s\n", num_binario);

return 0;
}


Como tarea, para no darte todo completo y que aprendas por ti mismo:
El código falla para valores mayores a 127, arregla ese error (pista: declarar la variable de forma que su rango este entre 0-255).
Puedes aumentar el código para que admita más de 255 caracteres.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

zShackra

Repito lo que dije en otro tema:

Los foros son lugares para ofrecer orientación a usuarios, no para resolverles vía códigos sus problemas.

La forma correcta es sin publicar código, sólo en aquellas áreas específicas donde el usuario se vea ofuscado, se explica con un poco más de claridad, el asunto es no publicar código a menos que sea estrictamente necesario.

joseh94

Oye zShackra, no seas tan bacin, te harás un favor. Si tu no quieres aportar nada, pues no contestes o pasa del tema, pero no vengas de sabelotodo cuando llevas en el foro dos días como quien dice.. Y aprende a leer, ya puse anteriormente que no he pedido el código resuelto, sólo una idea a partir de la cual poder trabajar porque no se me ocurre nada y lo que se me ha ocurrido no sé como ejecutarlo, así que, no bacinees tanto e infórmate mejor antes de hablar ;)

Un saludo, compañero

Pd: Gracias miky por tu ayuda

Eternal Idol

Cita de: joseh94 en 15 Noviembre 2014, 20:49 PM
Oye zShackra, no seas tan bacin, te harás un favor. Si tu no quieres aportar nada, pues no contestes o pasa del tema, pero no vengas de sabelotodo cuando llevas en el foro dos días como quien dice.. Y aprende a leer, ya puse anteriormente que no he pedido el código resuelto, sólo una idea a partir de la cual poder trabajar porque no se me ocurre nada y lo que se me ha ocurrido no sé como ejecutarlo, así que, no bacinees tanto e infórmate mejor antes de hablar ;)

Un saludo, compañero

Pd: Gracias miky por tu ayuda

Vos llevas tres dias y la politica del sub-foro es la que zShackra delineo.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

zShackra

Cita de: joseh94 en 15 Noviembre 2014, 20:49 PM
Oye zShackra, no seas tan bacin, te harás un favor. Si tu no quieres aportar nada, pues no contestes o pasa del tema, pero no vengas de sabelotodo cuando llevas en el foro dos días como quien dice.. Y aprende a leer, ya puse anteriormente que no he pedido el código resuelto, sólo una idea a partir de la cual poder trabajar porque no se me ocurre nada y lo que se me ha ocurrido no sé como ejecutarlo, así que, no bacinees tanto e infórmate mejor antes de hablar ;)

Un saludo, compañero

Pd: Gracias miky por tu ayuda

Sin ánimos de offtopic, pero... no es cuestión de sabiduría o no, es cuestión de respetar las políticas como dice Eternal Idol. De todos modos, no sabía yo que la antigüedad en un foro, denotaba el conocimiento de una persona...

Me disculpo si te hice sentir inferior, jamás fue mi intención.

Miky Gonzalez

Aquí todos vamos intentando quedar como quien mejor tiene la razón. Los temas en el foro se crean para ayudar, si mal no veo, mi primer mensaje fue:

CitarNo puedes venir y soltar el ejercicio que te mandaron hacer para que otros lo hagan por ti. Publica un código, si tienes duda publica el código, da una pregunta o varias pero que sean concretas, esto es:

¿Cómo puedo hacer para que se obtenga un número aleatorio de 0-255?
¿Cómo puedo obtener un vector que contenga la conversión binaria de un número de tamaño 1 byte?
¿Cómo puedo cronometrar los milisegundos que tarda un proceso en la ejecución?

A lo que el respondió que no quería un código completo, sólo quería una referencia. Ya sé que él ha podido al menos intentar algo de código y si le sale mal  publicarlo para que nosotros le ayudemos.

Si al aportar ese código como recurso he estado invalidando la política de este foro entonces no era la intención, la única intención con la que posteo en el foro es para ayudar a los demás o publicar un aporte de código. No quiero ver si soy el que más sabe o el que más respeta las normas: Los pedantes sobran en este foro.

Saludos,
MikyGonzalez.
Mi blog personal, con información acerca de programación, seguridad, desarrollo y electrónica:

EN CONSTRUCCIÓN

engel lex

con respecto a la discusión

1- tener más tiempo en el foro no te hace más inteligente, pero normalmente es un buen indicio de que entiendes las politicas y buenos comportamientos en el mismo, cosa que en muchos casos lleva a mejores preguntas o respuestas

2- la intención del foro no es dar el problema resuelto, es ayudar a que la persona lo resuelva, procura responder en pseudo o la duda puntual como ej si pregunta como aplicar un problema

3- eviten en lo posible desvirtuar el asunto del tema
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.