Dev - C++ - Error de memoria al correr un programa de Arrays en C++

 
Vista:
Imágen de perfil de Jose
Val: 3
Ha disminuido su posición en 8 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Error de memoria al correr un programa de Arrays en C++

Publicado por Jose (5 intervenciones) el 24/06/2017 22:03:03
Hola gente de LWDP.

Estoy realizando un programa que lea el nombre de un estudiante y promedie las calificaciones de 5 materias. El array debería leer el nombre, las 5 notas, promediarlas, mostrarlo por pantalla y luego ejecutar el ciclo dos veces mas. El problema es que cuando corro el programa da un error en memoria al tratar de ejecutar la tercera vuelta así como muestro en la imagen adjunta. El código que escribí es el siguient:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int i,j;
float promedio, suma_notas;
float notas[5];
string nombre[3];
 
int main (){
    for (i=1; i<=3; i++){
        suma_notas=0;
        cout<<"Escriba el nombre: ";
        cin>>nombre[i];
        for (j=1; j<=5; j++){
            cout<<"Escriba la nota " <<j <<": ";
            cin>>notas[j];
            suma_notas+=notas[j];
        }
        promedio=suma_notas/5;
        cout<<"El promedio de " <<nombre[i] <<" es: " <<promedio <<endl<<endl;
    }
    return (0);
}

Intenté usar un DELETE para los array pero tampoco me funcionó, agradezco cualquier ayuda que me puedan dar.


uno


dos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dionicio
Val: 168
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: Error de memoria al correr un programa de Arrays en C++

Publicado por Dionicio (57 intervenciones) el 24/06/2017 22:28:30
El error está en que estás tratando de acceder a memoria no reservada, porque tratas (en la siguiente sentencia) de acceder a la 5ta posición del array cuando ese indice no es correcto.
1
2
3
for(j = 1; j <= 5; j++){
/* Código hace algo*/
}

Lo mejor es siempre iniciar en 0 el contador (dado que todo vector empieza por dicha posición), y hacer una condición en el bucle como la siguiente:
1
2
3
for(j = 0; j < 5; j++){
/* Código hace algo*/
}

Las posiciones respectivas serían: 0,1,2,3,4 si tratas de acceder con índice 5 dará error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose
Val: 3
Ha disminuido su posición en 8 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

re: Error de memoria al correr un programa de Arrays en C++

Publicado por Jose (5 intervenciones) el 25/06/2017 17:48:33
Santo Dios, en ese detalle se pegaba el programa. Agradecidísimo, un abrazo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar