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');
}
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.