Buenos días.
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
Muchas gracias de antemano
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 (cpp) [Seleccionar]
#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