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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


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

Desconectado Desconectado

Mensajes: 26



Ver Perfil
bucle con char
« en: 1 Abril 2014, 20:02 pm »

Realizar un programa que lea palabras hasta que se introduzca “fin”.


Siempre he usado el int para parar mis bucles o sino los hacia con for, pero no se como podria hacer un bucle para que escribiendo fin se detuviese el programa, se que con int seria así:

Código
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main(){
  6.  
  7.  
  8.    int palabra;
  9.  
  10.  
  11.    while (palabra != 1){cout << "Introduzca palabras<escriba fin para parar el programa>: ";
  12.    cin >> palabra;
  13.    cout<<endl;}
  14.  
  15.  
  16.  
  17.  
  18. system("pause");
  19. return 0;
  20.    }

la pregunta entera es esta pero solo dudo en eso :


. Realizar un programa que lea palabras hasta que se introduzca “fin”,
mostrando una estadística de las longitudes de las palabras, es decir, el número total
de palabras de longitud 1 que se hayan introducido, el total de longitud 2, etc. La máxima
longitud de las palabras deberá ser de 25 caracteres. Una posible salida de este programa sería:
Palabras longitud 1: 0
Palabras longitud 2: 10

Palabras longitud 25:


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: bucle con char
« Respuesta #1 en: 1 Abril 2014, 20:31 pm »

un while se ejecuta hasta que la condición devuelva false o, en su defecto 0. Es decir, no está limitada a enteros.

Tu tienes que hacer una comparación dentro del while para que el bucle se repita hasta que la palabra elegida coincida con "fin". Dado que usas la clase string es tan sencillo como echar mano a los operadores, en concreto el operador != que, curiosamente, retorna un booleano.

El resto te lo dejo a ti, que es como se aprende.

Un saludo.


En línea

vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: bucle con char
« Respuesta #2 en: 1 Abril 2014, 20:46 pm »

A lo mejor te interesa el while cin  ;D
https://www.youtube.com/watch?v=ZYZQakNhkgM
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: bucle con char
« Respuesta #3 en: 1 Abril 2014, 22:26 pm »

Palabra no está inicializada cuando llegas al bucle...
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: bucle con char
« Respuesta #4 en: 2 Abril 2014, 01:01 am »


Y para variar falta la librería cstdlib para el system ... por no hablar de la indentación y de esa forma tan peculiar de poner las llaves....:huh: :huh: :huh:

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


En línea

Yoel Alejandro

Desconectado Desconectado

Mensajes: 254



Ver Perfil WWW
Re: bucle con char
« Respuesta #5 en: 2 Abril 2014, 01:25 am »

Hay otra forma sutil, aunque elegante de hacerlo. Poniendo la cadena vacía como indicador para el fin del programa (en lugar de la cadena "fin").

Me explico, por ejemplo si usamos en C la función gets(), (ojo peligro, cuidado con desbordamiento de buffer) y al pedir la cadena presionas Enter, pues se recibe la cadena vacía, y finalizas el programa:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(void) {
  6.  
  7.   char buffer[100];
  8.  
  9.   gets( buffer );
  10.   while ( *buffer != '\0' ) {
  11.      printf("Usted escribio: %s\n", buffer);
  12.      gets( buffer );
  13.   }
  14.  
  15.   return 0;
  16. }

Otra forma sería usando la secuencia de fin de archivo EOF para terminar el programa, aunque es algo más complicado, mejor para ti el primer método.

¿Alguien ofrece solución equivalente en C++?
« Última modificación: 2 Abril 2014, 01:30 am por yoel_alejandro » En línea

Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: bucle con char
« Respuesta #6 en: 2 Abril 2014, 03:27 am »

por fuera de las repuestas ya dadas, no se si yo estoy errando viendo la direccion que tomaron las respuestas...

puedes usar un "break;" para romper el ciclo y salir de el o un "return 0;" si estás en main, para cerrar el main y dar por finalizado el programa (al llegar a un return inmediatamente se sale de la función de se está sin importar si terminó o no)
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: bucle con char
« Respuesta #7 en: 2 Abril 2014, 03:34 am »

¿Alguien ofrece solución equivalente en C++?
Ya la indico eferion: verificar que la lectura sea exitosa y a continuacion comparar la palabra con la literal "fin". Mas o menos asi:
Código
  1. string palabra;
  2.  
  3. // ...
  4.  
  5. while (cin >> palabra && palabra != "fin"){
  6.   cout << palabra << endl;
  7.  
  8.   // ...
  9. }
Po supuesto hay que agregar el calculo de las frecuencias de las palabras, para ello se puede utilizar un vector.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
lukaszg_15

Desconectado Desconectado

Mensajes: 26



Ver Perfil
Re: bucle con char
« Respuesta #8 en: 3 Abril 2014, 17:12 pm »

si me hace el bucle pero para leer las palabras que escribo en la consola me sirve? es decir, que tendria que hacer para que me reconozca las palabras introducidas? supongo que luego seria pasarlo todo por un strlen y compararlos
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: bucle con char
« Respuesta #9 en: 3 Abril 2014, 17:41 pm »

si me hace el bucle pero para leer las palabras que escribo en la consola me sirve?
Si.

supongo que luego seria pasarlo todo por un strlen y compararlos
Lo usual en C es utilizar strlen, en el caso de C++ utilizas la función miembro "size", tienen el mismo efecto (resultar en el numero de caracteres de la cadena).

Para las frecuencias declaras un array (o un objeto de la clase vector, depende del enunciado) de 26 elementos (por simplicidad ignoras el primer elemento frec[0]), uno para cada frecuencia: frec[1] almacena el numero de palabras de longitud uno, frec[2] el numero de palabras de longitud dos, etc.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda (Parar bucle con dato boolean) [bucle while]
Java
Dem0ny 5 18,303 Último mensaje 17 Diciembre 2008, 17:43 pm
por Dem0ny
duda doble puntero char a matriz de char
Programación C/C++
neo_from_cs_matrix 3 6,042 Último mensaje 5 Septiembre 2011, 03:53 am
por rir3760
Lectura de matríz de char como char** o DWORD*
Programación C/C++
david_BS 3 3,263 Último mensaje 20 Febrero 2012, 20:49 pm
por Eternal Idol
Como pasar una cadena char a hexadecimal por argumento a un constant char?
Programación C/C++
ahaugas 3 4,888 Último mensaje 13 Enero 2013, 14:09 pm
por ahaugas
Problema conversión Unsigned char a char
Programación C/C++
juliodiez 4 2,631 Último mensaje 19 Enero 2013, 04:34 am
por juliodiez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines