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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Salir de bucle cuando el caracter es un espacio [Resuelta]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Salir de bucle cuando el caracter es un espacio [Resuelta]  (Leído 6,173 veces)
diegoCmC

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Salir de bucle cuando el caracter es un espacio [Resuelta]
« en: 6 Junio 2011, 17:28 pm »

Tengo una duda con el siguiente programa que estoy creando, es de fines didacticos, y aun lo tengo en construccion, asi que me faltan cosas xD
la duda es como salgo de una cadena de caracteres cuando hay un espacio

En este ejemplo esta en la linea 31 y hago que salga cuando se encuentra un '.' como seria para salir cuando se encuentra un espacio o un intro??

Código:
//Programa que almacena el nombre y numero de telefono de 10 personas y permite mostrarlos
#include<iostream>
using namespace std;

struct Persona {
    char Nombre[65];
    long Telefono;
} Gente[10];

int main()
{
    //Mostramos por pantalla la utilidad del programa
    cout<<"Programa de almacenamiento de datos de personas"<<endl;
    cout<<"-----------------------------------------------"<<endl<<endl;

    char opcion;
    int CuentaLetras=0;

    //Creamos la interacion inicial para introducir los 10 datos
    for (int i=0; i<10; i++)
    {
        //mensaje inicial
        cout<<"Introduce un nombre: ";

        //Bucle que almacena los nombres en la variable
        do
        {
            cin>>Gente[i].Nombre[CuentaLetras];
            CuentaLetras++;
        }
        while(Gente[i].Nombre[CuentaLetras-1]!='.');
        CuentaLetras=0;
    }
    for(int i=0; i<10; i++)
    {
        cout<<Gente[i].Nombre;
    }

    //Creamos el menu de interacion con el usuario.
    do
    {
        cout<<"a) Buscar por nombre"<<endl;
        cout<<"b) Buscar por número de télefono"<<endl;
        cout<<"c) Salir"<<endl<<endl;
        cout<<"Pulsa una opcion: ";
        cin>>opcion;

        //Opcion a. Buscar por nombre

        //Opcion b. Buscar por número de telefono

    }
    //Opcion c. Salir
    while(opcion!='c');

    return 0;
}


« Última modificación: 7 Junio 2011, 16:28 pm por diegoCmC » En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Salir de bucle cuando el caracter es un espacio
« Respuesta #1 en: 6 Junio 2011, 19:47 pm »

Prueba a poner para el espacio ' ' o 0x20 (creo que era ese el caracter ASCII del espacio), y para el intro '\n'


En línea

lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: Salir de bucle cuando el caracter es un espacio
« Respuesta #2 en: 6 Junio 2011, 19:52 pm »

while(Gente.Nombre[CuentaLetras-1]!='.' && Gente.Nombre[CuentaLetras-1]!=0x20 && Gente.Nombre[CuentaLetras-1]!=10);
Debes buscar su valor decimal, haxadecimal u octal en la tabla ascii.
Tambien se puede poner de la siguiente manera "\n" . Esto es el enter.

http://www.elhacker.net/ascii.gif
En línea

diegoCmC

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Re: Salir de bucle cuando el caracter es un espacio
« Respuesta #3 en: 6 Junio 2011, 20:37 pm »

Muchas gracias por las respuestas, pero eso ya lo habia probado y no me funciona :S

while(Gente.Nombre[CuentaLetras-1]!="/n");    da un error
while(Gente.Nombre[CuentaLetras-1]!='/n');    me compila perfecto pero el bucle es infinito
while(Gente.Nombre[CuentaLetras-1]!=/n);    da un error

tambien me dan bucles infinitos con
while(Gente.Nombre[CuentaLetras-1]!=0x20);
while(Gente.Nombre[CuentaLetras-1]!=' ');


el programa que uso es el code:blocks de ubuntu, no se si sera el programa el problema

muchas gracias por las respuestas, pero a ver si a alguien se le ocurre algo que me funcione =)
En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
Gunit

Desconectado Desconectado

Mensajes: 17



Ver Perfil
Re: Salir de bucle cuando el caracter es un espacio
« Respuesta #4 en: 6 Junio 2011, 20:49 pm »

Código
  1. while(Gente.Nombre[CuentaLetras-1]!='/n');

Es \n y no /n , se usa barra que esta al lado del 1  :P

Corregido :

Código
  1. while(Gente.Nombre[CuentaLetras-1]!='\n');

Saludos.
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: Salir de bucle cuando el caracter es un espacio
« Respuesta #5 en: 6 Junio 2011, 22:08 pm »

Código
  1. #include <stdio.h>
  2.  
  3. int main(int argc, char **argv)
  4. {
  5. while(1>0)
  6. {
  7. switch(getchar())
  8. {
  9. case (char)0x20:
  10. printf("Espacio\n");
  11. break;
  12. case (char) 0xA:
  13. printf("Intro\n");
  14. break;
  15. default:
  16. printf("Otra\n");
  17. break;
  18. }
  19. }
  20. return 0;
  21. }

ami eso me los reconoce...
En línea

lapras

Desconectado Desconectado

Mensajes: 140



Ver Perfil WWW
Re: Salir de bucle cuando el caracter es un espacio
« Respuesta #6 en: 6 Junio 2011, 22:48 pm »

Perdon no es asi "\n" es asi '\n' por que sono seria una cadena i es un solo caracter.
En línea

alexis33de

Desconectado Desconectado

Mensajes: 56


Ver Perfil
Re: Salir de bucle cuando el caracter es un espacio
« Respuesta #7 en: 7 Junio 2011, 01:07 am »

Lo que yo haria es usar la funcion strtok, q basicamente hace lo q quieres, que al escontrar un espacio siga .
Aqui un ejemplo de como funciona, tengo una cadena y al encontrar un espacio , devuelve palabra y luego un enter.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.   char s1[49] = "Esto es un ejemplo para usar la funcion strtok()";
  8.   char s2[4] = " \n\t";
  9.   char *ptr;
  10.  
  11.   printf( "s1=%s\n", s1 );
  12.  
  13.   ptr = strtok( s1, s2 );    // Primera llamada => Primer token
  14.   printf( "%s\n", ptr );
  15.   while( (ptr = strtok( NULL, s2 )) != NULL )    // Posteriores llamadas
  16.     printf( "%s\n", ptr );
  17.  system("pause");
  18.   return 0;
  19. }
En línea

diegoCmC

Desconectado Desconectado

Mensajes: 177



Ver Perfil
Re: Salir de bucle cuando el caracter es un espacio [Resuelta]
« Respuesta #8 en: 7 Junio 2011, 16:27 pm »

Muchas gracias por la ayuda chicos
En línea

a todas las que me abrieron su coraza traeles suerte
ya no creo en el amor pero querria volver a verte
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[QT C++] Como salir del bucle??
Programación C/C++
x7uk 3 2,993 Último mensaje 28 Noviembre 2012, 17:21 pm
por febef
Salir de un bucle while sin pulsar Ctrl + d [getchar -Lenguaje C]
Programación C/C++
NOB2014 2 1,523 Último mensaje 30 Noviembre 2015, 03:09 am
por NOB2014
Como salir del bucle (preferiblemente con algun system())
Programación C/C++
alpachino98 2 1,160 Último mensaje 23 Octubre 2017, 19:45 pm
por alpachino98
No consigo salir de un bucle While
Programación C/C++
mario290386 4 1,769 Último mensaje 5 Agosto 2018, 20:35 pm
por mario290386
salir de un bucle presionando la tecla ESC
Programación C/C++
kakshi 2 1,101 Último mensaje 4 Agosto 2019, 21:49 pm
por kakshi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines