Tengo que hacer una practica para la universidad de un programa que le inserte dos palabras y me muestre por pantalla la intersección de ellas, es decir
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
}
}