Problema Codeblocks (c++)
ordenados
hilos
+ valorados
Adán ∙ UMA
ForoIngenieros: miembro
Jul 2018 | 8 Mens.
Univ.: UMA
Estoy haciendo una práctica de la facultad y al compilar y ejecutar el código, al meter algunos valores por teclado el programa se cierra automáticamente, ¿alguien encuentra el fallo? Estoy bloqueado y no puedo seguir 😫
Código:
Spoiler: [ pulsa para ver ]
# include <iostream>
# include <string>
# include <array>
using namespace std;
const unsigned DIM=100;
const unsigned TAM=3;

typedef array <float, TAM> TSaltos;

typedef struct{
string nombre;
string nacionalidad;
TSaltos saltos;
} TDeportista;


typedef array <TDeportista, DIM> TLista;

typedef struct{
int nPers;
TLista lista;
} TCompeticion;

unsigned Menu ();
void Mostrar(const TCompeticion &c);
bool Inscribir(TCompeticion &c);
void Vaciar(TCompeticion &c);
bool Prueba(TCompeticion &c, string aux,float& i1, float& i2, float& i3);


// -- Principal --------
int main () {
// TCompeticion c;
TCompeticion c;
TDeportista d;
unsigned opcion;
string aux;
float i1, i2, i3;

do {

opcion = Menu();
switch (opcion) {
case 1: Mostrar(c);


break;
case 2:
cout << "Nombre: ";
cin >> c.lista[c.nPers].nombre;
cout << "Nacionalidad: ";
cin >> c.lista[c.nPers].nacionalidad;
if(!Inscribir(c)){
cout << "Deportista inscrito.";
c.nPers++;
}
else{
cout << "ERROR. El deportista ya estaba inscrito.";
}

break;

case 3:
cout << "Nombre: "<<endl;
cin >> aux;
cout << "Resultado de los tres intentos: "<<endl;
cin >> i1, i2, i3;
if(Prueba(c,aux,i1,i2,i3)){

cout << "Intentos anotados correctamente."<<endl;
}
else{
cout << "ERROR. El deportista no existe."<<endl;
}
break;

case 4: // Ganador


break;

case 5: // Nacionalidad

break;
}

} while (opcion != 0 );
}

unsigned Menu () {
unsigned opcion;
cout << endl;
cout << "1. - Mostrar todo" << endl;
cout << "2. - Inscribir deportista" << endl;
cout << "3. - Realizar la prueba" << endl;
cout << "4. - Ganador" << endl;
cout << "5. - Nacionalidad" << endl;
cout << "0. - Salir" << endl;
do {
cout << "Introduzca Opcion: ";
cin >> opcion;
} while ( ! ((opcion >= 0) && (opcion <= 5)) );
return opcion;
}



void Vaciar(TCompeticion &c){
c.nPers=0;
}

bool Inscribir(TCompeticion &c){
bool ok=false;
int i=0;
if(c.nPers==0){
for(int j=0;j<TAM;j++){
c.lista[c.nPers].saltos[j]=0;
}
ok=false;
}
else{
while(ok==false && (i<c.nPers)){
if(c.lista[c.nPers].nombre==c.lista.nombre){
ok=true;
}
else{
for(int j=0;j<TAM;j++){
c.lista[c.nPers].saltos[j]=0;
}
ok=false;
}
i++;
}
}
return ok;
}

void Mostrar(const TCompeticion &c){
for(int i=0;i<c.nPers;i++){
cout << "Deportista n: "<< i+1 <<endl;
cout << "Nombre: " << c.lista.nombre << endl << "Nacionalidad: " << c.lista.nacionalidad<<endl;
cout << "Resultados: "<<endl;
for(int j=0;j<TAM;j++){
cout << c.lista.saltos[j]<<endl;
}
}
}

bool Prueba(TCompeticion &c, string aux, float &i1, float &i2, float &i3){
bool punt=false;
for(int i=0;i<c.nPers;i++){
if(aux==c.lista.nombre){
punt=true;
for(int i=0;i<TAM;i++){
i1=c.lista.saltos[1];
i2=c.lista.saltos[2];
i3=c.lista.saltos[3];
}
}
else{
punt=false;
}
}
return punt;
}



Gracias de antemano a todos!!

PD. El código está incompleto y seguramente con errores.
@SrIncognito resuelve dudas
Alejandro ∙ UCA
Posible Ingeniero Informático
Abr 2018 | 0 Mens.
Univ.: UCA
Hay errores de compilación, por lo que no voy a mirar el código. Si haces que compile y subes la versión actualizada y sigue sin funcionar, podría echarte una mano.
0
Blackburn ∙ UNEX
Informáticos
Abr 2018 | 24 Mens.
Univ.: UNEX
Te digo lo mismo que #1, no tengo tiempo para corregirtelo, no compila, subelo de nuevo sin errores de compilacion y le echo un vistazo
0
jayarem ∙ UNEX
ForoIngenieros: miembro
Abr 2018 | 28 Mens.
Univ.: UNEX
Lo mismo que los dos anteriores.

Te recomiendo que cambies de IDE a CLion, de JetBrains.
0
Compartir en
Twitter
Whatsapp
Telegram
Facebook