Cosa rarisima en codigo c++

Iniciado por anonimo115, 19 Agosto 2017, 11:24 AM

0 Miembros y 1 Visitante están viendo este tema.

anonimo115

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

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

AlbertoBSD

La imagen es muy pequeña y el codigo no se entiende del todo. Si tuviera el enunciado mas grande, no me daria flojera depurar el codigo paso a paso.

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW