Operando1 = azufre
Operando2 = zafio
Resultado = afz
He hecho el programa que supuestamente deberia hacerlo pero al ejecutarlo y despues de meterle la primera palabra el programa me "peta".
Espero que podais ayudarme y decirme donde esta el error, gracias.
Código C++:
Ver original
#include <iostream> using namespace std; #include <string> const unsigned MAX_PAL_DIST = 50; typedef string TArray[MAX_PAL_DIST]; struct TDatos{ TArray a; unsigned n; }; void contienePatron(const string& p, TDatos& datos); bool permitida(const string& s); void pintaPalabras(const TDatos& datos); int main() { TDatos datos; string p; cout << "Introduzca patron en minusculas: "; cin >> p;//Introduce palabra primera contienePatron(p,datos); pintaPalabras(datos); return 0; } void contienePatron(const string& p, TDatos& datos){//Introduce palabra segunda y compara string s; int i=0; int j=0; cout << "Introduzca texto terminado en 'FIN': "; while((s!="FIN")&&(datos.n<MAX_PAL_DIST)){ do{ cin >> s;//Introduce palabra segunda y mira si puede introducirla } while(!permitida(s)); if(s[i]==p[j]){//Compara las letras de las palabras i++; datos.a[datos.n] = s[i];//Si han sido iguales, se guarda la palabra en el array de datos. datos.n++;//incrementa la casilla de datos }else{ j++; } } } bool permitida(const string& s){ bool res = true; for(unsigned i=0;i<s.size();i++){ if((s[i]<'a')||(s[i]>'z')){ res = false; } } return res; } void pintaPalabras(const TDatos& datos){ for(unsigned i=0;i<datos.n;i++){ cout << datos.a[i] << " ";//escribe las palabras } }