es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Se supone que debe tomar el número de materias como entrada, tomar las calificaciones correspondientes y mostrar el promedio de las calificaciones, pero no está funcionando…

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int n, tg=0;
   printf("Ingrese el número de asignaturas: ");
   scanf("%d", &n);

   while (n>0)
   {
      int grade;
      printf("Ingrese las calificaciones: ");
      scanf("%d", &grade);
      n--;
      tg+=grade;
   }
   float avg;
   avg = (tg/n);
   printf("\nSu Promedio es %f\n", avg);
   return 0;
}

/* Se supone que debe mostrar el promedio de calificaciones, pero no muestra ningún resultado y muestra esto en su lugar:
“Proceso devolvió -1073741676 (0xC0000094) tiempo de ejecución: 6.532 s” */</stdlib.h></stdio.h>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El código anterior está diseñado para calcular la calificación promedio de un estudiante en función del número de materias ingresadas y las calificaciones otorgadas para cada materia. Sin embargo, parece que el código está encontrando un error, ya que no muestra la calificación promedio como se pretendía. En su lugar, muestra el mensaje: “Proceso devuelto -1073741676 (0xC0000094) tiempo de ejecución: 6.532 s”.

    Este error es el resultado de un error de división por cero, en el cual se está intentando dividir la nota total (tg) por el número de materias (n), que ya se ha decrementado a cero en el bucle while. Como resultado, el divisor es cero, lo que causa el error de comportamiento no definido.

    Para solucionar este problema, el cálculo de la calificación promedio debería moverse fuera del bucle while, para asegurar que el valor de n no se modifique. Además, el código debería incluir una comprobación para asegurarse de que el valor de n no sea cero antes de intentar calcular el promedio, para evitar un error de división por cero.

    El código actualizado debería verse algo así:

    # include <stdio.h>
    # include <stdlib.h>
    
    int main()
    {
       int n, tg=0;
       printf("Ingrese el número de materias: ");
       scanf("%d", &n);
    
       while (n>0)
       {
          int grade;
          printf("Ingrese las calificaciones: ");
          scanf("%d", &grade);
          n--;
          tg+=grade;
       }
       if (n != 0) {
           float avg;
           avg = ((float)tg/n);
           printf("\nSu calificación promedio es %f\n", avg);
       } else {
           printf("\nError: No se puede dividir entre cero.\n");
       }
       return 0;
    }
    

    Al mover el cálculo de la calificación promedio fuera del bucle while y verificar que n no sea cero antes de dividirlo, el código debería funcionar correctamente y mostrar la calificación promedio como se pretendía.</stdlib.h></stdio.h>

Comments are closed.