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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Sobre media de asignaturas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sobre media de asignaturas  (Leído 2,117 veces)
droken26

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Sobre media de asignaturas
« en: 15 Marzo 2015, 15:14 pm »

Muy buenas, estoy liado con un programa para la uni., y debo de sacar la media por asignaturas y la media por notas, el caso es que el primer punto lo he sacado, pero tengo un problema para sacar el segundo punto,  nota media de cada prueba (calculada como la media de las notas de todos los alumnos en una prueba), por mucho que he cambiado los parametros siempre me refleja la ultima nota incluida en este caso en el ultimo alumno, estoy aburridooo y no avanzo. Ruego una ayuda, os adjunto el codigo.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6. //void menu(); // Menu de opciones
  7.  
  8. //void main(){
  9.  
  10. float Notas[4][10], media[10],suma;
  11. float Notas1[4][10], media1[10],suma1;
  12. //float promedio(float notap)
  13. int a,b,c,d;
  14. int opc;
  15. //float prom = 0;
  16.   // prom = notap/10;
  17.    //return prom;
  18. {
  19. // --------------------------------------------------------------------------------------//
  20. //void menu(){
  21. printf("\n Introduce una opcion del menu\n");
  22. printf("\n 1.- Calcular Nota final del alumno\n");
  23. printf("\n 2.- Calculo nota media por prueba\n");
  24. printf("\n 3.- Listado de Pruebas y Notas\n");
  25. printf("\n 4.- Salir del programa\n");
  26.  
  27. scanf("%d",&opc);
  28. switch(opc)
  29.  
  30. // --------------------------------------------------------------------------------------
  31. case 1:{
  32. for (a=0;a<10;a++)
  33. {suma=0;
  34. printf("\n Datos del Alumno %d\n",a+1);
  35. for(b=0;b<4;b++)
  36. {
  37. printf("\n Introduce la calificacion de la prueba %d:", b+1);
  38. scanf("%f", &Notas[a][b]);
  39. suma=suma+Notas[a][b];
  40. }
  41. media[a]=suma/b;
  42.  
  43. printf("\n\n La nota media del alumno %d es: %.2f\n", a+1, media[a]);
  44.  
  45. }
  46. break;
  47. // --------------------------------------------------------------------------------------
  48. case 2:{
  49. }
  50. for (c=0;c<4;c++)
  51. {suma1=0;
  52. printf("\n Datos de la prueba %d\n",c+1);
  53. for(d=0;d<10;d++)
  54. {
  55. printf("\n Introduce la calificacion del alumno %d:", d+1);
  56. scanf("%f", &Notas1[c][d]);
  57. suma=suma1+Notas1[c][d];
  58. }
  59. //media1[c]=suma/d;
  60.  
  61. printf("\n\n La nota media de la prueba %d es: %.2f\n", c+1, suma);//media1[c]);
  62. }
  63. break;
  64.  
  65. // --------------------------------------------------------------------------------------
  66.  
  67. //while (opc !=0);
  68.  
  69. //return 0;
  70. }
  71. }
  72. }


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Sobre media de asignaturas
« Respuesta #1 en: 15 Marzo 2015, 17:13 pm »

por mucho que he cambiado los parametros siempre me refleja la ultima nota incluida en este caso en el ultimo alumno, estoy aburridooo y no avanzo.
Tal vez sea por solo copiar y pegar.

Al parecer el programa original utilizaba funciones y lo cambiaste a uno sin ellas tanto por los comentarios como porque hay llaves innecesarias.

En cuanto al programa:

1) Solo en el primer caso debes pedir las calificaciones de todos los alumnos, ahí utilizas mal los indices de los arrays:
Código
  1. float Notas[4][10], media[10], suma;
  2. float Notas1[4][10], media1[10], suma1;
  3.  
  4. /* ... */
  5.  
  6. for (a = 0; a < 10; a++){
  7.   suma = 0;
  8.   printf ("\n Datos del Alumno %d\n", a + 1);
  9.   for (b = 0; b < 4; b++){
  10.      printf ("\n Introduce la calificacion de la prueba %d:", b + 1);
  11.      scanf ("%f", &Notas[a][b]);
  12.      suma = suma + Notas[a][b];
  13.   }
  14. media[a] = suma / b;
  15.  
En esos bucles la variable "a" tomara los valores 0 .. 9 y la variable "b" los valores 0 .. 3. Bien los limites de los bucles están al revés o bien declaraste mal los arrays (en este caso debería ser "Notas[10][4]").

2) No necesitas de dos juegos de variables, con uno solo basta y hay que evitar nombres como "media" y "media1" ya que no son descriptivos: ¿Cual es la diferencia entre ellos?

3) Para calcular la media de la prueba no tienes por que pedir datos, la media de cada alumno ya la tienes en el array "media", solo tienes que imprimir ese valor dividido entre el numero de alumnos.

Ya por ultimo una aproximación mejor para el programa es primero pedir los datos de todos los alumnos y solo entonces dar la opción de imprimir la media de alumnos o prueba.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
droken26

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Sobre media de asignaturas
« Respuesta #2 en: 15 Marzo 2015, 18:48 pm »

Ok, muchas gracias.
No es que lo haya copiado. Puse los comentarios porque pensaba realizar el menú cin la función void menú, así como el bucle do...while. Por eso los tengo en comentarios. Tengo la mala constumbre de empezar la programación y después el diagrama.

Un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Cuántas asignaturas me pueden quedar en 4º para ir a Bachillerato? « 1 2 »
Foro Libre
HJ ~ 15 57,989 Último mensaje 15 Junio 2011, 21:24 pm
por Saberuneko
¿Qué asignaturas se dan en Ingeniería Informática y en qué consisten?
Dudas Generales
minicatsCB 0 1,636 Último mensaje 25 Agosto 2013, 16:59 pm
por minicatsCB
Elegir asignaturas de bachillerato
Foro Libre
MarLisaXVIII 4 2,517 Último mensaje 12 Septiembre 2015, 15:02 pm
por MarLisaXVIII
Suspender 2 asignaturas por culpa de una
Foro Libre
4dr14n31t0r 6 2,455 Último mensaje 16 Febrero 2017, 11:24 am
por Randomize
¿Qué asignaturas me cojo?
Dudas Generales
Anon_8 2 2,188 Último mensaje 29 Enero 2018, 13:49 pm
por Anon_8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines