Mm estuve echandole un vistazo, y vi que falla aquí:
vector<ranking>classificacion(vector<usuario>p){
vector<ranking>v;
for(int i=0;i<p.size();i++){
int lugar=donde_esta(p[i].nombre,v);
/**Aqui falla**/ v[lugar].total_pruebas=v[lugar].total_pruebas+1;/**Aqui falla**/
v[lugar].puntos=v[lugar].puntos+p[i].puntos;
if(p[i].tipo_competicion=='s'){
v[lugar].pruebas_puntuables=v[lugar].pruebas_puntuables+1;}
else if(p[i].tipo_competicion=='n'){v[lugar].pruebas_puntuables=v[lugar].pruebas_puntuables+0;}
}
return v;
}
Aparentemente, a base de pauses, vi que ahi da el error. No me paré más, porque bueno, es bastante lioso todos los vectores.
Un par de cosas que vi, que podrías revisar:
/*Linea 76*/ vector<ranking>v=classificacion(p);
/*Linea 32*/ vector<ranking>v;
Esos 2 vectores se llaman igual, "v". No se si eso tendrá que ver.
Siento no ser de más ayuda. Si encuentras por ahí algún error, pues bien, sinó, siento estorbar xd
EDITO: En el título pones error al compilar. Yo lo compilé con Code::Blocks, y me dió error en tiempo de ejecución. Me compiló con varios warnings, nada más.
Te pongo los warnings, por si te interesan:
In function 'int donde_esta(std::string, std::vector<ranking>&)':|
|43|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]|
||In function 'std::vector<ranking> classificacion(std::vector<usuario>)':|
|66|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]|
||In function 'int main()':|
|167|warning: comparison between signed and unsigned integer expressions [-Wsign-compare]|
||In function 'int donde_esta(std::string, std::vector<ranking>&)':|
|57|warning: control reaches end of non-void function [-Wreturn-type]|
||=== Build finished: 0 errors, 4 warnings (0 minutes, 5 seconds) ===|
Cabe destacar el Warning que dice que la función "int donde_esta(std::string, std::vector<ranking>&)", que si el "
if" no se cumple, no retorna ningún valor. No se como lo tienes tú pensado, posiblemente no tenga nada que ver ese warning, pero bueno. Sugiero xD