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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Sobre la lectura de variables...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sobre la lectura de variables...  (Leído 2,208 veces)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Sobre la lectura de variables...
« en: 10 Marzo 2014, 20:49 pm »

Buenas.

Suponte, que quiero leer los números:
Citar
2 5

Yo haría:
Código
  1. int numero,numero2;
  2. cin>>numero>>numero2;

Y perfecto. ¿Pero que pasaría si hubiese una coma en lugar de un espacio?
Citar
2,5

¿Como cambio el delimitador de cin para poder leerlos directamente?


« Última modificación: 10 Marzo 2014, 20:55 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Sobre la lectura de variables...
« Respuesta #1 en: 10 Marzo 2014, 23:36 pm »

Buenas.

Suponte, que quiero leer los números:
Yo haría:

Código
  1. int numero,numero2;
  2. cin>>numero>>numero2;
  3.  

Y perfecto. ¿Pero que pasaría si hubiese una coma en lugar de un espacio?
¿Como cambio el delimitador de cin para poder leerlos directamente
?



No sé si es un caso aislado o es una lectura fija, como por ejemplo en la introducción de coordenadas. Si es este último caso valdría:

Código
  1. .....................................
  2. char ch;
  3. int numero,numero2;
  4. cin>>numero>>ch>>numero2;
  5. cout << numero<<"  "<<numero2<<endl;
  6. ..................................
  7.  


¡¡¡¡ Saluditos! ..... !!!!






« Última modificación: 11 Marzo 2014, 01:46 am por leosansan » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Sobre la lectura de variables...
« Respuesta #2 en: 11 Marzo 2014, 01:58 am »

Eso no funcionaría porque el primer cin lee hasta el espacio. Y como no hay espacio leeria los dos numeros del tirón.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Sobre la lectura de variables...
« Respuesta #3 en: 11 Marzo 2014, 02:01 am »

Eso no funcionaría porque el primer cin lee hasta el espacio. Y como no hay espacio leeria los dos numeros del tirón.

No, pruébalo que funciona. La variable ch se "come" la coma y cada número estará en su sitio. A mí me funcionó.

¡¡¡¡ Saluditos! ..... !!!!


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Sobre la lectura de variables...
« Respuesta #4 en: 11 Marzo 2014, 02:06 am »

Anda xD. Pues si.

Asi que solo había que cargarse la coma, me estoy volviendo viejo ;D

¡Gracias! ^^
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: Sobre la lectura de variables...
« Respuesta #5 en: 11 Marzo 2014, 02:38 am »

Hola!!! Bueno, en C++ no conozco un método que no sea el propuesto por leosansan.

Pero hurgando en los papeles encontré una función de biblioteca de C llamada strtok() (requiere <string.h>) que me despertó curiosidad. Funciona precisamente en casos como éstos, su finalidad es "dividir una cadena en componentes léxicos". Sea la cadena s1, que se quiere dividir en componente léxicos, por medio de un token separador dado por la cadena (no carácter) s2. Entonces la llamada

strtok(s1, s2);

extrae de s1 el primer componente léxico, hasta llegar al token delimitador (o al final de s1 si no se encontró dicho delimitador). La función devuelve una cadena que corresponde al componente extraído. Las llamadas subsiguientes a strtok() deben hacerse con NULL como primer argumento, y de allí en adelante se siguen extrayendo los siguientes componentes de la cadena, devolviendo NULL cuando no existan más de ellos.

En el ejemplo a continuación el usuario introduce cualquier secuencia como "1,2,3,4", y el programa devuelve las distintas divisiones encontradas de la cadena, según el delimitador ","

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main() {
  6.  
  7. char buf[101];
  8. char *s;
  9.  
  10. scanf( "%s", buf );
  11.  
  12. if ( ( s = strtok( buf, ",") ) != NULL )           /* primer componente */
  13. printf( "%s\n", s );
  14. while ( ( s = strtok( NULL, ",") ) != NULL )  /* restantes, hasta llegar al final */
  15. printf( "%s\n", s1 );
  16. }

===========================================
(EDITO)

A propósito del tema, estaba revisando que la función strtok(char* s1, const char *s2) acepta en s2 una cadena donde cualquiera de sus caracteres puede funcionar como delimitador. Esto puede aumentar la potencia del programa, por ejemplo si s2=",." entonces cualquiera de los caracteres coma o punto será un delimitador. El programa con la entrada "1,2.3.4" separará en 1, 2, 3, 4
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main() {
  6.  
  7.   char buf[101];
  8.   char *s1;
  9.  
  10.   scanf( "%s", buf );
  11.  
  12.   if ( ( s1 = strtok( buf, ",.") ) != NULL )
  13.      printf( "%s\n", s1 );
  14.   while ( ( s1 = strtok( NULL, ",.") ) != NULL )
  15.      printf( "%s\n", s1 );
  16. }

NOTA. No funciona el espacio como separador debido a scanf(). Si se reemplaza por fgets() sí lo podría aceptar.
« Última modificación: 12 Marzo 2014, 01:43 am por yoel_alejandro » En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sobre el Manejo de Variables
Scripting
najmuddin 3 2,300 Último mensaje 25 Mayo 2008, 07:08 am
por najmuddin
foto lectura, y lectura veloz, scanning y otros metodos de lectura rapida....
Foro Libre
Kase 3 12,679 Último mensaje 4 Febrero 2014, 08:47 am
por camilo_
Sobre lectura de archivos en c++
Programación C/C++
Richimax_90 0 1,419 Último mensaje 8 Diciembre 2011, 19:08 pm
por Richimax_90
Lectura opcional de una serie de variables
Programación C/C++
amgarciac 4 2,191 Último mensaje 14 Septiembre 2013, 19:56 pm
por amgarciac
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines