Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: angelderonda en 22 Enero 2019, 09:17 am



Título: Duda sobre guardar palabras e imprimir
Publicado por: angelderonda en 22 Enero 2019, 09:17 am
Buenas, necesito saber como guardar palabras metidas por un usuario de manera que el programa finaliza cuando detecta la palabra "END".
Ejemplo:
HOLA SOY ANGEL---aqui el programa seguiria pidiendo palabras y las va guardando
HOLA SOY END--el programa finalizaria.

Lo que tengo hasta ahora es lo siguiente, pero no me funciona tal y como quiero, ya que quiero que las palabras se vayan guardando dentro de ese array de string hasta que se encuentre la palabra "END"



#include <iostream>
#include<array>
using namespace std;

const int MAX_PAL_DIST = 20;
typedef   array<string, MAX_PAL_DIST> TString;



struct TOpenString{

   int nelem = 0;
   TString s;
};

bool isletter(char c);   

int main()
{
    TOpenString a;

    string word;

    char c;


    while (cin >> c and word != "END") {
       
       if (isletter(c))
       {   
          word += c;
       }

       else
       {          
          a.s[a.nelem] = word;
          word = "";
          ++a.nelem;
       }
    }

                   

    return 0;
}

bool isletter(char c){

   return (c >= 'A' and c <= 'Z');
}


Título: Re: Duda sobre guardar palabras e imprimir
Publicado por: K-YreX en 22 Enero 2019, 14:59 pm
Primero de todo, mete tu código entre etiquetas de código GeSHi (dando a modificar mensaje y encima del cuadro de texto las puedes seleccionar).

Segundo, no vayas capturando caracter a caracter... <cin> puede almacenar hasta el primer espacio que se encuentra. En cambio hay otras funciones como <getline()> que también almacenan lo que viene después de cada espacio hasta que se pulsa enter.

Una idea que se me viene a la cabeza, almacena todo el texto hasta el enter final en un <string>. Recorre ese <string>, por cada palabra, si es distinta de <END>, la guardas. Y cuando coincida con <END>, se acabó. Ahora te toca traducirlo. Suerte :-X

PD: Te recomiendo que amplies el programa para poder escribir también en minúsculas ya que el cambio que tienes que hacer es muy pequeño y vuelve el programa bastante más funcional.