este programa me da error en windows, ayudita porfa

Iniciado por califvv, 9 Diciembre 2012, 04:58 AM

0 Miembros y 2 Visitantes están viendo este tema.

califvv

Hice un programa que me enviaron en la uni, sobre calificaciones. El codigo es el siguiente:
Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>
#include <conio.h>

using namespace std;

int main()
{
int Estruc [50], aprobados, reprobados, may6;

int i;

float calificaciones[i];
float mayor=0, menor=10, pos=0;
float p_aprobados, p_reprobados;
aprobados = reprobados = may6 = 0;
float promedio=0;

cout<<"\nIngrese el numero de alumnos de la Asignatura - Estructura de Datos:\n\t";
cin>>Estruc[50];

for(int i=0; i<50; i++)
{
cout<<"\nIngrese la calificacion del alumno numero "<<i+1<<":\t";
cin>>calificaciones[i];
promedio=promedio+calificaciones[i];

if(calificaciones[i]>mayor)
{
   mayor=calificaciones[i];
}
else if(calificaciones[i]<menor)
{
   menor=calificaciones[i];
  pos=i;
}
if(calificaciones[i]<7)
{
reprobados = reprobados+1;
} else if(calificaciones[i]>=7 && calificaciones[i]<=10)
{
aprobados = aprobados+1;
}
if(calificaciones[i]>=6)
{
may6 = may6+1;
}
}


promedio=promedio/Estruc [50];
p_aprobados=aprobados*100/Estruc [50];
p_reprobados=reprobados*100/Estruc[50];
cout<<"La nota mayor es "<<mayor<<endl;
cout<<"La nota menor es "<<menor<<" Y esta en la posicion "<<pos<< endl;
cout<<"\nLa cantidad de aprobados es de "<<aprobados<<", lo que representa el "<<p_aprobados<<"%.";
cout<<"\nLa cantidad de reprobados es de "<<reprobados<<", lo que representa el "<<p_reprobados<<"%.";
cout<<"\n\nEl promedio general de las notas es: "<<promedio<<".";

system("pause");

return 0;
}

Y me compila muy bien sin ningun error, pero cuando en el bucle for (i<50) se paraliza en ingresar la nota numero 28 y me da un error de windows que dice: el programa debe cerrarse, cuando  i<27 me corre todo perfecto, no entiendo que sucede :huh: ayuda porfaaa porq no se de que es el error :-[

califvv

Use el depurador y no me sale ningun error :-(.. No se que hay mal, si alguien sabe y puede ayudarme, muchas gracias  >:(

naderST

Cuando haces Estruc[50] te sales de los límites del arreglo, ya que en C/C++ los arreglos van de 0 a n-1 donde n es el número de elementos del mismo.

En tu caso el arreglo va de 0 a 49.

durasno

Otra cosa:
int i;

float calificaciones[i];

estas creando un arreglo de tamaño i, pero i que valor tiene???? sino la inicializas tiene "basura"


Saludos
Ahorrate una pregunta, lee el man

califvv

Muchisimas gracias, si cierto inicialice i y listo!! mil graciass!! ;-)