Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/02/2012, 11:34
Avatar de juanalbertosk8
juanalbertosk8
 
Fecha de Ingreso: noviembre-2011
Ubicación: Málaga, Spain, Spain
Mensajes: 10
Antigüedad: 12 años, 4 meses
Puntos: 0
Interseccion Letras AYUDA PORFAVOR!!

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
  1. #include <iostream>
  2. using namespace std;
  3. #include <string>
  4. const unsigned MAX_PAL_DIST = 50;
  5. typedef string TArray[MAX_PAL_DIST];
  6. struct TDatos{
  7. TArray a;
  8. unsigned n;
  9. };
  10.  
  11. void contienePatron(const string& p, TDatos& datos);
  12. bool permitida(const string& s);
  13. void pintaPalabras(const TDatos& datos);
  14.  
  15. int main() {
  16.     TDatos datos;
  17.     string p;
  18.  
  19.     cout << "Introduzca patron en minusculas: ";
  20.             cin >> p;//Introduce palabra primera
  21.             contienePatron(p,datos);
  22.             pintaPalabras(datos);
  23.  
  24.             return 0;
  25.     }
  26.  
  27. void contienePatron(const string& p, TDatos& datos){//Introduce palabra segunda y compara
  28. string s;
  29. int i=0;
  30. int j=0;
  31.  
  32.     cout << "Introduzca texto terminado en 'FIN': ";
  33.     while((s!="FIN")&&(datos.n<MAX_PAL_DIST)){
  34.         do{
  35.             cin >> s;//Introduce palabra segunda y mira si puede introducirla
  36.         }
  37.         while(!permitida(s));
  38.         if(s[i]==p[j]){//Compara las letras de las palabras
  39.             i++;
  40.             datos.a[datos.n] = s[i];//Si han sido iguales, se guarda la palabra en el array de datos.
  41.             datos.n++;//incrementa la casilla de datos
  42.         }else{
  43.                 j++;
  44.             }
  45.         }
  46.     }
  47.  
  48.  
  49. bool permitida(const string& s){
  50. bool res = true;
  51.  
  52.     for(unsigned i=0;i<s.size();i++){
  53.     if((s[i]<'a')||(s[i]>'z')){
  54.     res = false;
  55.  
  56.     }
  57.     }
  58. return res;
  59. }
  60.  
  61. void pintaPalabras(const TDatos& datos){
  62.     for(unsigned i=0;i<datos.n;i++){
  63.         cout << datos.a[i] << " ";//escribe las palabras
  64.     }
  65.     }

Última edición por juanalbertosk8; 06/02/2012 a las 12:20