[?]Ayuda con un ejercicio

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

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

drk00

Tengo que hacer un ejercicio donde tengo que convertir un entero binario a su equivalente decimal, pero se tiene que ir agregando uno por uno y cuando uso el
cin automaticamente se pasa un espacio y no quiero que se pase espacio quiero que quede todo en una sola linea.

tambien que no sea algo complicado de hacer que boy empezando

se que se puede hacer con conio pero segun lei no lo recomiendan mucho y evito usarlo

:-X :-X :-X :silbar: :silbar: :silbar:


PiroskY

Vos queres que el usuario ingrese 101010, le de al enter, y al lado de ese numero aparezca el decimal?

drk00

queria que 101010 quedara en una sola linea, pero queria ingresar el entero binario por partes con diferentes variables algo haci

Código (cpp) [Seleccionar]
int a,b,c;
cin>>a; //ejemplo aqui 10
cin>>b; //ejemplo aqui 10
cin>>c; //ejemplo aqui 10


se veria algo haci
Código (cpp) [Seleccionar]

10
10
10

y quiero que cuando se vayan poniendo los numeros se vea todo en una sola linea y no brinque espacio
asi
Código (cpp) [Seleccionar]
101010







Edu

Usas string entonces y vas haciendo var = var + nuevodato

drk00

#4
Cita de: XXX-ZERO-XXX en  7 Julio 2011, 05:32 AM
Usas string entonces y vas haciendo var = var + nuevodato
este ejercicio es de un libro("Como programar en C++, el Deitel)
y no creo aver visto eso todavia

asi dice el ejercicio:
CitarIntroduzca un entero (de cuatro dígitos) que contenga sólo 0s y 1s (es decir, un entero "binario") e imprima su equivalente decimal. (Sugerencia: utilice los operadores de módulo y de división para detectar los dígitos del número "binario" uno por uno, de derecha a izquierda. Al igual que en el sistema numérico decimal, donde el dígito más a la derecha tiene un valor posicional de 1, y el siguiente dígito a la izquierda tiene un valor posicional de 10, y a continuación de 100, y a continuación de 1000, etc., en un sistema numérico binario, el dígito más a la derecha tiene un valor posicional de 1, el siguiente dígito a la derecha tiene un valor posicional de 2, y a continuación de 4 , y a continuación de 8, etc. Por lo tanto, el número decimal 234 puede ser interpretado como 4 * 1 + 3 * 10 + 2 * 100. El equivalente decimal del número 1101 binario es 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 o bien, 1 + 0 + 4 + 8, es decir 13).

no se si se entienda lo que quiero hacer
aunque e notado que ponen ejercicios que se resuelve con cosas que aun no se ven o se veran en el prox capitulo.


Edu

Ah entonces es viendo como te dijieron que se haya, si 1101 es 1 * 1 + 0 * 2 + 1 * 4 + 1 * 8 entonces es porque tendrias que dar vuelta 1101 y multiplicar cada digito por 1 , el otro por 2, el otro por 4 y el ultimo por 8.

drk00

si pero como separar el "entero binario"??
yo tenia pensado hacerlo asi
Código (cpp) [Seleccionar]
int a,b,c,d;
cin>>a;
cin>>b;   
cin>>c;
cin>>d;
/* utilizando 4 variables y que cada una tuviera un valor para
despues multiplicarlo
y luego hacer a*1+b*2+c*4+d*8
pero el problema esta que al ingresar el valor de las variables
se veria asi*/

1
1
0
1

//cuando yo quiero que se vea asi
1101



leogtz

"Una pregunta" no es un título muy bueno para el mensaje, va en contra de las reglas, editalo. Pon un nombre que vaya acorde a tu duda.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Queta

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

PiroskY

Yo creo que el ejercicio apunta a que hagas algo mas o menos asi:

Pedir el numero una sola vez
Guardar en un entero auxiliar ese mismo numero
A ese auxiliar dividirlo por 10
Al numero que te da multiplicarlo por 10
Calcular la diferencia entre el numero que guardaste y el que obtuviste

Así estarías obteniendo la ultima cifra de tu numero binario
Si entendés que es lo que esta pasando ahí ya tenes un punto de partida
Suerte