Autor
|
Tema: Obtener toda la línea con un enter (Leído 3,718 veces)
|
JuszR
Desconectado
Mensajes: 2.866
Programming & RI
|
Estoy haciendo un conversor de binario a decimal y tengo un problema. Para ingresar el número binario tengo que apretar cada dígito y depués enter (8 veces, o más). ¿Hay alguna manera para poder obtener toda la línea, escribiendo los 8 dígitos, y solo apretar una vez enter? Sería más fácil poner 00001111 [ENTER]; que 0[ENTER], 0[ENTER], 0[ENTER]... Este es mi código: void ConvertToDec() { cout << "\nGive me a binary number (8-bit)" << endl; short Resultado = 0; for(int i = 0, x = 128; i < 8; i++) { unsigned short Numero[8]; cin >> Numero[i]; Resultado += Numero[i] * x; x /= 2; } cout << endl << Resultado << endl; }
Traté poniendo cin.getline(Numero, 8); pero me tira un error larguísimo.
|
|
« Última modificación: 31 Octubre 2010, 02:28 am por JuszR »
|
En línea
|
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas!
Es tan facil como ir lyendo (con fgets) fragmentos y solapandolos.
Tambien podrias utilizar un puntero a la informcion y asignacion dinamica de memoria...
¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
JuszR
Desconectado
Mensajes: 2.866
Programming & RI
|
fgets me suena a C, yo uso C++. Lo del puntero no se, todavía no llegué a eso.
|
|
|
En línea
|
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
La mayoría, por no decir todas, de las bibliotecas estándar de C, están adaptadas para C++ con todas sus respectivas funciones: http://www.cplusplus.com/reference/clibrary/cstdio/ Ahí encontrarás fgets() y, como bien he dicho las demás funciones que son de la librería cstdio.
|
|
« Última modificación: 16 Noviembre 2010, 22:27 pm por Horricreu »
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
Tu problema está en que cin.getline recibe una cadena:
istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim );
lee la cadena s hasta n caracteres o un \n en el primer caso lee la cadena s hasta n caracteres o el carácter 'delim' en el segundo caso.
En ese caso, lo que puedes hacer es que tu "numero" se lea primero como una cadena, y luego pasarlo a entero para trabajar con él o bien trabajar con la cadena de carácteres y guardar el resultado de la conversión en un entero.
|
|
« Última modificación: 31 Octubre 2010, 11:12 am por Akai »
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Si usas scanf, lo haces todo en una línea, personalmente prefiero printf y scanf al cout y cin ya que se pueden hacer más cosas... #include <iostream> #include <stdio.h> using namespace std; int main() { char number[9]; cout << "Give me a binary number (8-bit): "; scanf("%8[^\n]", number); number[8] = 0; cout << "Numero: " << number << endl; return 0; }
Saludos.
|
|
|
En línea
|
|
|
|
JuszR
Desconectado
Mensajes: 2.866
Programming & RI
|
Gracias.
|
|
|
En línea
|
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
|
|
|
piou
Desconectado
Mensajes: 25
|
scanf("%8[^\n]", number);
No entiendo eso %8[^\n] qué significa poner un número detrás del %, y los corchetes y el ^ antes de \n??
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
scanf("%8[^\n]", number);
No entiendo eso %8[^\n] qué significa poner un número detrás del %, y los corchetes y el ^ antes de \n?? Significa leer por el teclado hasta que se pulse enter \n y como máximo 8 caracteres. Saludos.
|
|
|
En línea
|
|
|
|
|
|