elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [ AYUDA ] Calcular el indice acumulado de un estudiante en .C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ AYUDA ] Calcular el indice acumulado de un estudiante en .C  (Leído 7,836 veces)
NelsonR

Desconectado Desconectado

Mensajes: 2


Ver Perfil
[ AYUDA ] Calcular el indice acumulado de un estudiante en .C
« en: 25 Julio 2021, 06:24 am »

Buenas soy nuevo en el foro no se como son los debidos procedimientos para publicar pero vengo pidiendo ayuda, necesito hacer lo que dice el titulo ya he durado 2 días atorado en esto y no se que hacer.

Tengo esto:
Código
  1. float calcular_indiceacumulado(int cantidad, int nota[])
  2. {
  3.    float indiceacumulado =0;
  4.    int i;
  5.    for (i = 0; i < cantidad; i++)
  6.    {
  7.        indiceacumulado += nota[i];
  8.    }
  9.    return (indiceacumulado/i);
  10. }
  11.  
  12. printf("Cuantos cuatrimestres curso el estudiante #%d: ", i + 1);
  13.        scanf("%d", &estudiante.cuatrimestre);
  14.        for (int o = 0; o < estudiante.cuatrimestre; ++o)
  15.        {
  16.            printf("Materias cursadas durante el cuatrimestre #%d del estudiante: #%d: ", o + 1, i + 1);
  17.            scanf("%d", &estudiante.matcursadas);
  18.            printf("\n------------INTRODUZCA LAS %d NOTAS------------\n\n", estudiante.matcursadas);
  19.  
  20.            for (int i = 0; i < estudiante.matcursadas; ++i)
  21.            {
  22.                printf("Nota %d: ", i + 1);
  23.                scanf("%d", &estudiante.notas[i]);
  24.            }
  25.            estudiante.indice= calcular_indice(estudiante.matcursadas, estudiante.notas);
  26.            printf("\nSu indice del cuatrimestre es %.2f con el estudiante #%d\n", estudiante.indice, i + 1);

Yo necesito hacer el indice acumulado de todos los cuatrimestre que agregue el usuario, no entiendo como, estoy frisado, cualquier ayuda me vendría muy bien, se lo agradecería de corazón.

MOD: Agregado resaltado de sintaxis C a las etiquetas de código.


« Última modificación: 25 Julio 2021, 13:25 pm por K-YreX » En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: [ AYUDA ] Calcular el indice acumulado de un estudiante en .C
« Respuesta #1 en: 25 Julio 2021, 14:05 pm »

Tienes un problema con la definición de la estructura y es que estás sobreescribiendo datos. Si en la primera iteración dices que cursa 4 materias, en la segunda vuelta dices 5 y vas a sobreescribir el 4 anterior por el 5.

A simple vista tienes 2 opciones sin crear más estructuras. De más simple/rápida a más correcta/profesional serían:
  • Crear un array auxiliar y guardar después de cada iteración, la nota media (índice acumulado) de ese cuatrimestre. Al terminar haces la media de todos los valores del array y ya tienes la media de todos los cuatrimestres.
  • Modificar la estructura Estudiante para poder almacenar todos los datos sin tener que sustituirlos en cada iteración.

Yo te recomiendo la segunda opción.
El sentido de utilizar una estructura es poder almacenar todos los datos internamente y si utilizas la primera opción (con la estructura tal y como la tendrás ahora) estás sobreescribiendo datos en cada iteración, lo cual no tiene mucho sentido.

(En este ejemplo voy a utilizar arrays estáticos porque son más fáciles que los dinámicos pero si sabes usar ya los arrays dinámicos, te recomiendo utilizarlos)
Código
  1. #define MAX_CUATRIMESTRES 4
  2. #define MAX_MATERIAS_CUATRIMESTRE 10
  3.  
  4. typedef struct {
  5.    // los campos que consideres (nombre, edad, ...)
  6.    int num_cuatrimestres;
  7.    int materias[MAX_CUATRIMESTRES]; // El indice i indicara el numero de materias cursadas en el cuatrimestre i
  8.    float notas[MAX_CUATRIMESTRES][MAX_MATERIAS_CUATRIMESTRE]; // El campo (i, j) indicara la nota de la materia j durante el cuatrimestre i
  9. } Estudiante;

Ahora solo tienes que rellenar todos los datos:
Código
  1. #define MAX_ESTUDIANTES 50
  2.  
  3. int main() {
  4.  Estudiante estudiantes[MAX_ESTUDIANTES];
  5.  
  6.  int num_estudiantes;
  7.  // Para asegurarte de que se introduce un numero valido puedes hacer un filtro:
  8.  // Utiliza los filtros para el resto de valores que tiene que introducir el usuario para asegurarte de que introducen valores validos
  9.  do {
  10.    printf("Introduce el numero de estudiantes: ");
  11.    scanf("%d", &num_estudiantes);
  12.  } while(num_estudiantes < 1 || num_estudiantes > MAX_ESTUDIANTES);
  13.  
  14.  for(int i = 0; i < num_estudiantes; ++i) {
  15.    printf("Introduce el numero de cuatrimestres del estudiante %d: ", i+1);
  16.    scanf("%d", &estudiantes[i].num_cuatrimestres);
  17.  
  18.    for(int j = 0; j < estudiantes[i].num_cuatrimestres; ++j) {
  19.      printf("Introduce el numero de materias del estudiante %d durante el cuatrimestre %d: ", i+1, j+1);
  20.      scanf("%d", &estudiantes[i].materias[j]);
  21.  
  22.      for(int k = 0; k < estudiante[i].materias[j]; ++k) {
  23.        printf("Introduce la nota de la materia %d del cuatrimestre %d del estudiante %d: ", k+1, j+1, i+1);
  24.        scanf("%f", &estudiantes[i].notas[j][k]);
  25.      }
  26.    }
  27.  }
  28. }

Ahora si haces una función como:
Código
  1. float calcularMediaCuatrimestre(Estudiante estudiante, int cuatrimestre) {
  2.  // tu codigo aqui
  3. }

La función para calcular la media completa de un estudiante, sería algo así:
Código
  1. float calcularMediaCompleta(Estudiante estudiante) {
  2.  float sumaNotasCuatrimestres = 0;
  3.  for(int i = 0; i < estudiante.num_cuatrimestres; ++i)
  4.    sumaNotasCuatrimestres += calcularMediaCuatrimestre(estudiante, i);
  5.  return sumaNotasCuatrimestres / estudiant.num_cuatrimestres;
  6. }


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
NelsonR

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: [ AYUDA ] Calcular el indice acumulado de un estudiante en .C
« Respuesta #2 en: 25 Julio 2021, 18:09 pm »

Muchísimas gracias! me haz salvado la vida!, me sirvió mucho, una ultima consulta, como seria para llamar los 2 float?

Lo puse asi.

Código
  1. float calcularMediaCompleta(Estudiante estudiante) {
  2.    int valor1, valor2;
  3.  float sumaNotasCuatrimestres = 0;
  4.  for(int i = 0; i < estudiante.num_cuatrimestres; ++i)
  5.    sumaNotasCuatrimestres += calcularMediaCuatrimestre(valor1, valor2);
  6.  return sumaNotasCuatrimestres / estudiante.num_cuatrimestres;
  7. }
  8. float calcularMediaCuatrimestre(int cantidad, int nota[])
  9. {
  10.    float indice =0;
  11.    int i;
  12.    for (i = 0; i < cantidad; i++)
  13.    {
  14.        indice += nota[i];
  15.    }
  16.    return (indice/i);
  17. }
En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: [ AYUDA ] Calcular el indice acumulado de un estudiante en .C
« Respuesta #3 en: 28 Julio 2021, 21:51 pm »

No entiendo la función de valor1 y valor2.
Deberías repasar bien las funciones y parámetros en C pues si no tienes eso claro, no sirve de nada intentar avanzar a duras penas.

Tampoco entiendo por qué has cambiado los parámetros de la segunda función.
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python]Calcular indice de masa corporal y decir el estado
Scripting
word93 1 11,936 Último mensaje 28 Agosto 2010, 03:10 am
por Karcrack
Ayuda sobre indice Alfa de Crombach
Foro Libre
Nav 21 0 2,066 Último mensaje 12 Noviembre 2012, 02:54 am
por Nav 21
Calcular Indice Estudiantil
Programación C/C++
ElChulon 4 3,641 Último mensaje 21 Abril 2016, 04:55 am
por HardForo
Ayuda soy estudiante!
Programación C/C++
lorenzo1552 5 3,883 Último mensaje 5 Julio 2017, 05:45 am
por 0and6
Ayuda javascript ejercicio de estudiante
Java
masterkein 3 3,243 Último mensaje 12 Mayo 2018, 16:08 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines