[?]Ayuda con un ejercicio

Iniciado por drk00, 7 Julio 2011, 01:36 AM

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

rir3760

Me parece el enunciado es bastante claro. El punto clave para obtener la solucion exacta es como, en ese libro y hasta ese punto, almacenan las palabras leidas mediante el objeto cin, utilizando un:

A) array de caracteres.
B) objeto de la clase string

El algoritmo es sencillo: inicias con un acumulador en cero y, por cada digito del numero binario empezando por el mas significativo y terminando con el menos, multiplicas el acumulador por dos y sumas el digito.

Por ejemplo en el caso de 1101:
1) Acumulador a 0

   A   D  (A es el acumulador y D el digito procesado)
2) 0 * 2 + 1 == 1
3) 1 * 2 + 1 == 3
4) 3 * 2 + 0 == 6
5) 6 * 2 + 1 == 13

Un saludo
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

criskapunk

Esto es algo que hice el otro dia. El codigo siguiente te sirve para imprimir los cuatro digitos de una variable entera, separados por un espacio.

printf("%d %d %d %d", num / 1000, (num / 100) % 10, (num / 10) % 10, num % 10);

Vos no tendrias que separarlos, sino multiplicarlos por su 2**n (n es la posicion del digito) correspondiente y luego sumarlos.

Un saludo :)

drk00

Cita de: rir3760 en  7 Julio 2011, 17:19 PM
Me parece el enunciado es bastante claro. El punto clave para obtener la solucion exacta es como, en ese libro y hasta ese punto, almacenan las palabras leidas mediante el objeto cin, utilizando un:

A) array de caracteres.
B) objeto de la clase string

El algoritmo es sencillo: inicias con un acumulador en cero y, por cada digito del numero binario empezando por el mas significativo y terminando con el menos, multiplicas el acumulador por dos y sumas el digito.

Por ejemplo en el caso de 1101:
1) Acumulador a 0

   A   D  (A es el acumulador y D el digito procesado)
2) 0 * 2 + 1 == 1
3) 1 * 2 + 1 == 3
4) 3 * 2 + 0 == 6
5) 6 * 2 + 1 == 13

Un saludo

muchas gracias esta fue la que me quedo mas clara.
A ver si tengo algo de tiempo mas al rato y ponerme a hacerlo a ver como sale

Gracias.


do-while

¡Buenas!

Aqui tienes el pseudocodigo:



caracter c;
entero x=0;

leer c;

mientras c != '\n'

    si c == 0 ó c == 1
        x <- x * 2 + c - '0';

    sino
        lo que quieras

    fin si

    leer c

fin mientras

imprimir x;



Asi lees el numero de una linea y lo transformas en decimal de un tiron.

¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!