Sucede que el programa que tengo se detiene.
Se supone que debe leer:
- Nombre
- Cédula
- 5 lanzamientos
- Lanzamiento mayor
- Promedio de lanzamientos
Todo eso en un array/vector, eh abierto un for que recorre a los 10 atletas, el for hace 9 ciclos, en el 10mo lee el nombre y cédula del atleta numero 10 y justo despues de "leer" el primer lanzamiento el programa deja de funcionar.
"Proyecto.exe ha dejado de funcionar"
(esos lanzamientos están dentro de una matriz, por lo tanto uso un for
para ahorrar lineas de código)
Todo eso sucedió luego que de cambiara todos los valores iniciales de cada for
de 0 a 1
for (i=0 ; i<10 ; i++) ------>> for (i=1 ; i<11 ; i++)
#include <iomanip>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
using namespace std;
int main(int argc, char *argv[]) {
struct atleta {
char n[30];
float lm,l[5],prom,pr;
int ced,acc;
};
struct atleta at[10]; //Esta vaina es la estructura //
int m,i,j,k,f1,f2,c1,c2,f3,c3,f4,c4,q,w,t,e;
float lm2;
int op;
char resp='s';
while (resp=='s' || resp=='S')
{
//menu <<abre//
cout<<endl<<"Bienvenido al programa, escoga una de las siguientes opciones para continuar";
cout<<endl;
cout<<endl<<"ingresar datos de los atletas (recomendado)= 1";
cout<<endl<<"Modificar los datos de un atleta= 2";
cout<<endl<<"Mostrar un listado de todos los atletas= 3";
cout<<endl<<"Mostar los datos de un atleta segun su cedula= 4";
cout<<endl<<"Mostar los datos del ganador= 5";
cout<<endl<<"Atletas cuyo promedio es supera los 70 metros=; 6";
cout<<endl<<"Salir= 7";
for (k=1;k<2;k++)
{
op=0;
cout<<endl<<endl<<"Indique su opcion: "; cin>>op;
if(op<=0)
{
//system ("cls");
cout<<endl<<"Indique una opcion valida1";
k--;
}
else
{
}
}
//menu <<cierra//
switch (op)
{
case 1:
system ("cls");
for(i=1;i<11;i++) //leer datos de los 10 atletas <<abre// este es el original
{
cout<<endl<<"Indique el nombre del atleta Nº"<<i<<": ";
fflush(stdin);
gets (at[i].n);
for (j=1;j<2;j++) //leer y validar la cedula <<abre//
{
cout<<endl<<"Indique la cedula del atleta: ";
cin>>at[i].ced;
if (at[i].ced>0 && at[i].ced<=99999999)
{
//cout<<endl<<"Cedula Valida";
}
else
{
cout<<endl<<"Ingrese una cedula valida";
j--;
}
} //leer y validar la cedula <<cierra//
cout<<endl<<"A continuacion indique los 5 lanzamientos del atleta";
cout<<endl;
at[i].acc=0;
for (c1=1;c1<6;c1++) //leer y validar los 5 lanzamientos <<abre//
{
cout<<endl<<"ingrese el lanzamiento numero "<<c1<<": ";
cin>>at[i].l[c1]; //el for principal se ejecuta 10 veces a la 10ma vez el exe deja de funcionar justo aqui
if (at[i].l[c1]<0)
c1--;
else
{
}
at[i].acc=at[i].acc+at[i].l[c1]; //promedio de lanzamientos del atleta de turno <<abre//
} //leer y validar los 5 lanzamientos <<cierra//
cout<<at[i].acc<<endl;
at[i].prom=(at[i].acc)/5; //promedio de lanzamientos del atleta de turno <<cierra//
cout<<at[i].prom<<endl;
//calcular el lanzamiento mayor del atleta <<abre//
at[i].lm=0;
for (c2=1;c2<6;c2++)
{
if (at[i].l[c2]>at[i].lm)
at[i].lm=at[i].l[c2];
else
at[i].lm=at[i].lm;
} //calcular el lanzamiento mayor del altleta <<cierra//
} //ingresar los datos de los 10 atletas <<cierra//
break;
case 2: //modificar los datos de un atleta
cout<<endl<<"indique el numero del altleta a modificar";
cin>>m;
for (e=1;e<2;e++)
{
if (m<0 && m>10)
{
cout<<endl<<"indique un numero valido";
e--;
}
else{}
}
cout<<endl<<"indique el nombre";
cin>>at[m].n;
cout<<endl<<"indique la cedula";
cin>>at[m].ced;
for (t=1;t<2;t++)
{
if (at[t].ced>0 && at[t].ced<=99999999)
{}
else
{
cout<<endl<<"Ingrese una cedula valida";
t--;
}
};
for (f1=1;f1<6;f1++)
{
cout<<endl<<"Indique el lanzamiento Nº"<<f1<<" :";
cin>>at[m].l[f1];
if(at[m].l[f1]<0)
{
cout<<endl<<"Indique una cantidad valida";
f1--;
}
else {}
}
break;
case 3: //mostrar los datos de todos los atletas
system ("cls");
cout<<endl<<"N"<<"==Ced"<<"==L1"<<"==L2"<<"==L3"<<"==L4"<<"==L5"<<"==LM"<<"==Prom"<<endl;
for (f4=1;f4<11;f4++)
{
cout<<at[f4].n<<"=="<<at[f4].ced;
for (c4=1;c4<6;c4++)
{
cout<<"=="<<at[f4].l[c4];
}
cout<<"=="<<at[f4].lm<<"=="<<at[f4].prom<<endl;
}
break;
case 4: //datos de un atleta segun su cedula (utilizando una funcion)
system ("cls");
break;
case 5: //atleta ganador y sus datos
system ("cls");
lm2=0;
for (f3=1;f3<11;f3++)
{
if (at[f3].lm>lm2)
lm2=at[f3].lm;
else
lm2=lm2; //lanzamiento mayor calculado//
}
for(f2=1;f2<11;f2++)
{
if(lm2==at[f2].lm)
{
cout<<endl<<"Atleta ganador";
cout<<at[f2].n<<"="<<at[f2].ced;
for (c3=1;c3<6;c3++)
{
cout<<"="<<at[f2].l[c3];
}
cout<<"="<<at[f2].lm;
cout<<"="<<at[f2].prom;
}
else {}
}
break;
case 6: //atletas con un promedio mayor a 70
system ("cls");
for(q=1;q<11;q++)
{
at[q].pr=0;
if(at[q].prom>70)
{
at[q].pr=at[q].prom;
}
else{}
}
for (w=1;w<11;w++)
{
if(at[w].pr>70)
{
cout<<at[w].n<<"="<<at[w].ced;
for (c4=1;c4<6;c4++)
{
cout<<"="<<at[w].l[c4];
}
cout<<"="<<at[w].lm;
cout<<"="<<at[w].prom<<endl;
}
else{}
}
break;
case 7: //salir
system ("cls");
cout<<endl;
break;
default:
system ("cls");
cout<<endl<<"Indique una opcion valida"<<endl;
} //switch case <<cierra//
cout<<endl<<"para volver al menu presione 's', para salir del programa presione cualquier otra tecla"; cin>>resp;
system ("cls");
} //while <<cierra//
return 0;
}