Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/06/2010, 00:41
Avatar de BaByRoDrI
BaByRoDrI
 
Fecha de Ingreso: julio-2009
Ubicación: Mexico
Mensajes: 60
Antigüedad: 15 años, 6 meses
Puntos: 1
Pregunta Iniciando en C, programa sencillo

Hola este semestre ando iniciando con programación en C, acabo de terminar mi 2° programa que es básicamente pide el nombre del alumno, pide el nombre de 4 materias asi como sus calificaciones, saca el promedio.

La maestra puso un código bastante sencillo de solo 27 lineas que se limita a sacar el promedio, yo lo agrande a 49 con el plus de que muestra algunos mensajes en base a su promedio y de que si se ingresa alguna cantidad menor a 0 o mayor a 10 la tome como invalida.

En fin aquí esta mi código:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. void main()
  4. {
  5.  
  6. #ifdef WIN32
  7. system("cls");
  8. #else
  9. system("clear");
  10. #endif
  11.  
  12. char mat[30], nom[30];
  13. float calif, prom, suma;
  14. int  i;
  15.  
  16. suma=0;
  17.  
  18. printf("Nombre del alumno: "); scanf("%s",nom);
  19.  
  20. for (i=1;i<=4;i++)
  21.         {
  22.         printf("\nMateria %d: ", i);
  23.         scanf("%s", mat);
  24.         pedircalif:
  25.         printf("Calificacion %d: " ,i);
  26.         scanf("%f", &calif);
  27.         if (calif>10 || calif<0)
  28.                 {
  29.                 printf("\n\033[0;31mError la calificacion no puede ser mayor a 10 o menor a 0\033[0m\n");
  30.                 goto pedircalif;
  31.                 }
  32.         suma = suma + calif;
  33.         }
  34.  
  35. prom = suma/4;
  36. printf("\nEl alumno %s obtuvo el promedio %.2f\n",nom,prom);
  37.  
  38. if (prom <= 5)
  39.         { printf("\nLo siento has reprobado :'(\n"); }
  40. else if (prom >= 6 && prom < 8)
  41.         { printf("\nApenas tienes lo suficiente :/\n"); }
  42. else if (prom >= 8 && prom < 9)
  43.         { printf("\nBien :)\n"); }
  44. else if (prom >= 9 && prom < 10)
  45.         { printf("\nMuy bien :)\n"); }
  46. else
  47.         { printf("\nExcelente :D\n"); }
  48.  
  49. }

Solo quiero pedir su ayuda, que opinan, como lo mejorarían? Esos #ifdef estan correctos es que en la escuela usamos Windows :( pero yo lo hago todo en Linux :)

Y una duda anteriormente cuando trabajamos basi hicimos el programa que solo calculará el promedio y que detectara que la calificación fuera de un rango de 0-10 pero curiosamente cuando poníamos la letra e ó p la tomaba como buena, en este caso, si pongo p ó e muestra el mensaje de error pero varias veces :s ¿Por qué?