Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: califvv en 9 Diciembre 2012, 04:58 am



Título: este programa me da error en windows, ayudita porfa
Publicado por: califvv en 9 Diciembre 2012, 04:58 am
Hice un programa que me enviaron en la uni, sobre calificaciones. El codigo es el siguiente:
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. int Estruc [50], aprobados, reprobados, may6;
  10.  
  11. int i;
  12.  
  13. float calificaciones[i];
  14. float mayor=0, menor=10, pos=0;
  15. float p_aprobados, p_reprobados;
  16. aprobados = reprobados = may6 = 0;
  17. float promedio=0;
  18.  
  19. cout<<"\nIngrese el numero de alumnos de la Asignatura - Estructura de Datos:\n\t";
  20. cin>>Estruc[50];
  21.  
  22. for(int i=0; i<50; i++)
  23. {
  24. cout<<"\nIngrese la calificacion del alumno numero "<<i+1<<":\t";
  25. cin>>calificaciones[i];
  26. promedio=promedio+calificaciones[i];
  27.  
  28. if(calificaciones[i]>mayor)
  29. {
  30.   mayor=calificaciones[i];
  31. }
  32. else if(calificaciones[i]<menor)
  33. {
  34.   menor=calificaciones[i];
  35.  pos=i;
  36. }
  37. if(calificaciones[i]<7)
  38. {
  39. reprobados = reprobados+1;
  40. } else if(calificaciones[i]>=7 && calificaciones[i]<=10)
  41. {
  42. aprobados = aprobados+1;
  43. }
  44. if(calificaciones[i]>=6)
  45. {
  46. may6 = may6+1;
  47. }
  48. }
  49.  
  50.  
  51. promedio=promedio/Estruc [50];
  52. p_aprobados=aprobados*100/Estruc [50];
  53. p_reprobados=reprobados*100/Estruc[50];
  54. cout<<"La nota mayor es "<<mayor<<endl;
  55. cout<<"La nota menor es "<<menor<<" Y esta en la posicion "<<pos<< endl;
  56. cout<<"\nLa cantidad de aprobados es de "<<aprobados<<", lo que representa el "<<p_aprobados<<"%.";
  57. cout<<"\nLa cantidad de reprobados es de "<<reprobados<<", lo que representa el "<<p_reprobados<<"%.";
  58. cout<<"\n\nEl promedio general de las notas es: "<<promedio<<".";
  59.  
  60. system("pause");
  61.  
  62. return 0;
  63. }
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 :-[


Título: Re: este programa me da error en windows, ayudita porfa
Publicado por: califvv en 9 Diciembre 2012, 05:15 am
Use el depurador y no me sale ningun error :-(.. No se que hay mal, si alguien sabe y puede ayudarme, muchas gracias  >:(


Título: Re: este programa me da error en windows, ayudita porfa
Publicado por: naderST en 9 Diciembre 2012, 05:33 am
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.


Título: Re: este programa me da error en windows, ayudita porfa
Publicado por: durasno en 9 Diciembre 2012, 06:30 am
Otra cosa:
Código
  1. int i;
  2.  
  3. float calificaciones[i];
estas creando un arreglo de tamaño i, pero i que valor tiene???? sino la inicializas tiene "basura"


Saludos


Título: Re: este programa me da error en windows, ayudita porfa
Publicado por: califvv en 10 Diciembre 2012, 02:51 am
Muchisimas gracias, si cierto inicialice i y listo!! mil graciass!! ;-)