Buenas, tengo un ejercicio para la universidad que me pide que dando un patron, un sustituto y un texto, imprima por pantalla el texto y me cambie las palabras del patron que contenga el texto por el sustituto.
Yo he conseguido que dando el patron y el texto me imprima por pantalla las palabras que contengan el patron, pero nose como seria meterle el sustituto y cambiar el patron por el sustituto en el texto.
Código C++:
Ver original#include <iostream>
#include <string>
using namespace std;
const unsigned MAX_PAL_DIST = 20;
typedef string TArray[MAX_PAL_DIST];
struct TDatos{
TArray a;
unsigned n;
};
void contienePatron(const string& patron, TDatos& datos);
bool permitida(const string& texto);
bool contiene(const string& patron, const string& texto);
bool repetida(const string& texto, const TDatos& datos);
void pintaPalabras(const TDatos& datos);
void contienePatron(const string& patron, TDatos& datos){
string texto;
cout << "Introduzca texto terminado en 'FIN': ";
while((texto!="fin")&&(datos.n<MAX_PAL_DIST)){
do{
cin >> texto;
}
while(!permitida(texto));
if((contiene(patron,texto))&&(!repetida(texto,datos))){
datos.a[datos.n] = texto;
datos.n++;
}
}
}
bool permitida(const string& texto){
bool res = true;
for(unsigned i=0;i<texto.size();i++){
if((texto[i]<'a')||(texto[i]>'z')){
res = false;
break;
}
}
return res;
}
bool contiene(const string& patron, const string& texto){
unsigned i = 0, cont = 0;
bool res = false;
while((texto[i]!=texto[0])&&(i<texto.size())){
i++;
}
while((cont<patron.size())&&(i<texto.size())){
if(texto[i]==patron[cont]){
res = true;
i++;
cont++;
}
else{
res = false;
break;
}
}
return res;
}
bool repetida(const string& texto, const TDatos& datos){
bool res = false;
for(unsigned i=0;i<datos.n;i++){
if(datos.a[i]==texto){
res = true;
}
}
return res;
}
void pintaPalabras(const TDatos& datos){
for(unsigned i=0;i<datos.n;i++){
cout << datos.a[i] << " ";
}
}
int main() {
TDatos datos;
string patron, sustituto;
do{
cout << "Introduzca patron: ";
cin >> patron;
cout << "Introduzca sustituto: ";
cin>> sustituto;
}
while(!permitida(patron));
datos.n = 0;
contienePatron(patron,datos);
pintaPalabras(datos);
return 0;
}
Gracias.