elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Obtener toda la línea con un enter
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener toda la línea con un enter  (Leído 3,675 veces)
JuszR


Desconectado Desconectado

Mensajes: 2.866


Programming & RI


Ver Perfil
Obtener toda la línea con un enter
« en: 31 Octubre 2010, 02:23 am »

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]... ;D

Este es mi código:
Código
  1. void ConvertToDec()
  2. {
  3. cout << "\nGive me a binary number (8-bit)" << endl;
  4.  
  5. short Resultado = 0;
  6. for(int i = 0, x = 128; i < 8; i++)
  7. {
  8. unsigned short Numero[8];
  9. cin >> Numero[i];
  10.  
  11. Resultado += Numero[i] * x;
  12. x /= 2;
  13. }
  14.  
  15. cout << endl << Resultado << endl;
  16.  
  17. }

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 Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Obtener toda la línea con un enter
« Respuesta #1 en: 31 Octubre 2010, 06:04 am »

¡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 Desconectado

Mensajes: 2.866


Programming & RI


Ver Perfil
Re: Obtener toda la línea con un enter
« Respuesta #2 en: 31 Octubre 2010, 09:26 am »

fgets me suena a C, yo uso C++. :rolleyes:

Lo del puntero no se, todavía no llegué a eso. ;D
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 Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Obtener toda la línea con un enter
« Respuesta #3 en: 31 Octubre 2010, 09:50 am »

La mayoría, por no decir todas, de las bibliotecas estándar de C, están adaptadas para C++ con todas sus respectivas funciones:

Código:
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 Desconectado

Mensajes: 823



Ver Perfil
Re: Obtener toda la línea con un enter
« Respuesta #4 en: 31 Octubre 2010, 10:54 am »

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 Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Obtener toda la línea con un enter
« Respuesta #5 en: 1 Noviembre 2010, 14:50 pm »

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...

Código
  1. #include <iostream>
  2. #include <stdio.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. char number[9];
  9.    cout << "Give me a binary number (8-bit): ";
  10.    scanf("%8[^\n]", number);
  11.    number[8] = 0;
  12.  
  13.    cout << "Numero: " << number << endl;
  14.    return 0;
  15. }
  16.  

Saludos.
En línea

JuszR


Desconectado Desconectado

Mensajes: 2.866


Programming & RI


Ver Perfil
Re: Obtener toda la línea con un enter
« Respuesta #6 en: 2 Noviembre 2010, 12:11 pm »

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 Desconectado

Mensajes: 25


Ver Perfil
Re: Obtener toda la línea con un enter
« Respuesta #7 en: 2 Noviembre 2010, 16:30 pm »



Código
  1.  
  2.    scanf("%8[^\n]", number);
  3.  
  4.  

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 Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: Obtener toda la línea con un enter
« Respuesta #8 en: 2 Noviembre 2010, 17:18 pm »



Código
  1.  
  2.    scanf("%8[^\n]", number);
  3.  
  4.  

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Obtener primer integer de cada linea
Programación C/C++
JuszR 6 3,548 Último mensaje 29 Noviembre 2010, 18:09 pm
por piou
Codigo en java para obtener toda la información de tu pc
Java
Danielsk8 4 4,187 Último mensaje 9 Agosto 2016, 20:25 pm
por BloodSharp
Saltar linea al dar enter al escribir un arreglo char.
Programación C/C++
yan.exe 1 3,154 Último mensaje 3 Abril 2017, 14:35 pm
por MAFUS
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines