Me tendria que salir ANA 1 15 19 pero sin embargo me sale ANA 15 19.
No se por qué se come la primera posición.
¿Podríais por favor echarle un vistazo?
Este es el enunciado
y este mi codigo
Código
#include <iostream> using namespace std; const unsigned MAX_PAL_DIST=20; const unsigned MAX_REP=20; typedef int TArrayPosiciones[MAX_REP]; struct TPalabra{ unsigned numpos; string palabra; TArrayPosiciones arrpos; }; typedef TPalabra TArrayPalabras[MAX_PAL_DIST]; struct TVector{ unsigned numelem; TArrayPalabras arrpal; }; bool esPalindromo(const string& palabra){ string aux="", aux2=""; for(unsigned cont=0; cont<palabra.size();cont++){ aux+=palabra[cont]; } for(int cont=palabra.size()-1; cont>=0;cont--){ aux2+=palabra[cont]; } return aux==aux2&&aux.size()>1; } bool primeraVez(const string& palabra, const TVector& vect){ bool laprimera=true; int cont=0; while(laprimera&&cont<vect.numelem){ if(vect.arrpal[cont].palabra==palabra){ laprimera=false; } ++cont; } return laprimera; } int buscaPalabra(const string& palabra, const TVector& vect){ int cont=0; while(vect.arrpal[cont].palabra!=palabra){ ++cont; } return cont; } void muestraPalabra(int pos, const TVector& vect){ cout<<vect.arrpal[pos].palabra<<" "; for(unsigned cont=0;cont<vect.arrpal[pos].numpos;cont++){ cout<<vect.arrpal[pos].arrpos[cont]<<" "; } } void mostrarVector(const TVector& vect){ for(unsigned cont=0;cont<vect.numelem;cont++){ muestraPalabra(cont, vect); cout<<endl; } } int main(){ string palabra; int cont=0; TVector vect; vect.numelem=0; cout<<"Introduzca su texto (FIN para terminar)"<<endl; cin>>palabra; ++cont; while(palabra!="FIN"&&cont<MAX_PAL_DIST){ if(esPalindromo(palabra)){ if(primeraVez(palabra, vect)){ vect.arrpal[vect.numelem].numpos=0; vect.arrpal[vect.numelem].palabra=palabra; vect.arrpal[vect.numelem].arrpos[0]=cont; ++vect.numelem; ++vect.arrpal[vect.numelem].numpos; }else{ int pos=buscaPalabra(palabra, vect); vect.arrpal[pos].arrpos[vect.arrpal[pos].numpos]=cont; ++vect.arrpal[pos].numpos; } } ++cont; cin>>palabra; } mostrarVector(vect); }
Muchas gracias de antemano