fbpx

Ejercicio propuesto 2. Ordenamientos

  • Ejercicio propuesto 2. Ordenamientos

    Posted by Enzo Ariel Balderrama on 25 enero, 2023 en 2:40 pm

    Hola, hice el ejercicio y todo marcha bien hasta que ordena las calificaciones y al ’10’ lo marca como un ‘0’. ¿Cual puede ser el problema?

    Adjunto el codigo.

    /*

    2.- Crea un programa que guarde las nota y nombres de 10 alumnos en una matriz,

    y muestre las notas de mayor a menor junto con el nombre correcto del alumno.

    */

    #include<iostream>

    #include<string.h>

    using namespace std;

    int main () {

    char alumnoOriginal[10][40], alumnoCopia[10][40];

    int notas[10] = {};

    int auxiliar, vadera = 0;

    for (int i = 0; i <= 9; i++) {

    cout<<"Por favor ingrese nombre del alumno "<<i+1<<": ";

    cin.getline(alumnoOriginal[i], 30, '\n'); }

    cout<<endl<<"A continuacion ingrese la nota de cada alumno: "<<endl;

    for (int i = 0; i <= 9; i++) {

    cout<<"Ingrese nota del alumno "<<i+1<<" : ";

    cin>>notas[i];

    cout<<endl;

    }

    for (int i = 0; i <= 9; i++) {

    for (int z = 0; z <= 9; z++) {

    if (notas[z] > notas[z+1]) {

    auxiliar = notas[z];

    notas[z] = notas[z+1];

    notas[z+1] = auxiliar;

    vadera = 1;

    if (vadera == 1) {

    strcpy (alumnoCopia[0], alumnoOriginal[z]);

    strcpy (alumnoOriginal[z], alumnoOriginal[z+1]);

    strcpy (alumnoOriginal[z+1], alumnoCopia[0]);

    }

    }

    }

    if (vadera == 0) {

    i = 9;

    } else {

    vadera = 0;

    }

    }

    cout<<endl<<"La lista de notas ordenadas es la siguiente: "<<endl;

    for (int i= 9; i >= 0; i--) {

    cout<<alumnoOriginal[i]<<" :"<<notas[i]<<endl;

    }

    return 0;

    }

    Angel Sánchez respondido 1 año, 3 meses 2 Miembros · 1 Responde
  • 1 Responde
  • Angel Sánchez

    organizador
    25 enero, 2023 en 3:34 pm

    El problema en este código es que el código está intentando acceder a un índice fuera del rango del arreglo en el segundo for. Específicamente, en la línea “if (notas[z] > notas[z+1])” el índice z+1 puede ser igual a 10, lo cual provocaría un acceso a un índice fuera del rango del arreglo. Esto ocasiona el valor “0”.

    Deja tu segundo for de esta manera:

    for (int i = 0; i < 9; i++)

    ¡Saludos!

Inicia sesión para responder.

Start of Discussion
0 de 0 respuestas Junio 2018
Ahora