Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/06/2012, 11:04
Javieer-G
 
Fecha de Ingreso: diciembre-2008
Mensajes: 50
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Programa para sacar promedio

Te lo dejo con formato por si alguien se anima, y yo te puedo dar un consejo: Intenta ahorrar en código. Tienes una barbaridad de código y muy lioso. Es buen programador el que programa lo que necesita con el menor número de líneas posibles.... después ya vendran las cosas bonitas ;)

De primeras, te recomendaría que dividieses el código en varias funciones. Escribieses el prototipo arriba del todo, debajo de los #include, y justo después del prototipo una buena función main, compacta y clara. Por último, las definiciones de las funciones debajo del main con suficientes comentarios para que se entienda todo. y, como te digo, cuanto menos código, mejor.

Y tranqui, tiene buena pinta, pero todo es mejorable :D

Código C:
Ver original
  1. /*Programa que hace algo
  2. Hecho por : Alguien
  3. Nombre : la loca de kass y cristian : D
  4. */
  5. #include <stdlib.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8. #define FLOTANTES 15
  9. #define ENTEROS 7
  10. #define RESULTADO 5
  11. float var[FLOTANTES];
  12. int op[ENTEROS];
  13. float res[RESULTADO];
  14. int i;
  15. void parcial(void);
  16.  
  17. void parcial(void) {
  18.     printf("PARCIALES:\n1=Primer Parcial\n2=Segundo Parcial\n3=Tercer Parcial\nElige el parcial a evaluar: ");
  19.     scanf("%d", &i);
  20.     *
  21.     switch (i) {
  22.         case 1:*
  23.             for (i = 1; i <= 3; i++) {
  24.                 *
  25.                 printf("Estas evaluando el %d%c parcial\n", i, 248);
  26.                 do {
  27.                     printf("Cuantos puntos asignaras de examen en el %d%c parcial: ", i, 248);
  28.                     scanf("%f", &var[1]);
  29.                     if (var[1] > 9) {
  30.                         printf("No puedes poner un valor mayor a 9\n");
  31.                     }
  32.                 } while (var[1] > 9);
  33.                 var[0] = 10 - var[1];
  34.                 printf("Son %.1f puntos de evaluacion continua\n", var[0]);
  35.                 *
  36.                 printf("\nCuantos puntos o firmas maximas de evaluacion continua en el %d%c: ", i, 248);
  37.                 scanf("%f", &var[2]);
  38.                 do {
  39.                     printf("\nCuanto fue su calificacion en el examen: ");
  40.                     scanf("%f", &var[3]);
  41.                     if (var[3] > 10) {
  42.                         printf("La maxima calificacion es 10");
  43.                     }
  44.                 } while (var[3] > 10);
  45.                 printf("\nCuantos puntos o firmas tuvo el alumno considerando que el maximo es %.2f: ", var[2]);
  46.                 scanf("%f", &var[4]);
  47.                 var[5] = (var[1] / 10) * var[3];
  48.                 var[6] = (var[0] / var[2]) * var[4];
  49.                 res[i] = var[5] + var[6];
  50.                 printf("\nEvaluacion de examen: %.2f \nEvaluacion Continua: %.2f \nsu promedio es de: %.2f en el %d%c parcial\n", var[5], var[6], res[i], i, 248);
  51.             }
  52.             var[7] = (res[1] + res[2] + res[3]) / 3;
  53.             printf("El promedio total de cuarto semestre es: %.2f\n", var[7]);
  54.             break;
  55.         case 2:
  56.             do {
  57.                 printf("Cual es la calificacion del primer parcial: ");
  58.                 scanf("%f", &var[7]);
  59.                 if (var[7] > 10) {
  60.                     printf("La calificacion no puede ser mayor a 10");
  61.                 }
  62.             } while (var[7] > 10);
  63.             for (i = 2; i <= 3; i++) {
  64.                 *
  65.                 printf("Estas evaluando el %d%c parcial\n", i, 248);
  66.                 do {
  67.                     printf("Cuantos puntos asignaras de examen en el %d%c parcial: ", i, 248);
  68.                     scanf("%f", &var[1]);
  69.                     if (var[1] > 9) {
  70.                         printf("No puedes poner un valor mayor a 9\n");
  71.                     }
  72.                 } while (var[1] > 9);
  73.                 var[0] = 10 - var[1];
  74.                 printf("Son %.1f puntos de evaluacion continua\n", var[0]);
  75.                 printf("\nCuantos puntos o firmas maximas de evaluacion continua en el %d%c: ", i, 248);
  76.                 scanf("%f", &var[2]);
  77.                 do {
  78.                     printf("\nCuanto fue su calificacion en el examen: ");
  79.                     scanf("%f", &var[3]);
  80.                     if (var[3] > 10) {
  81.                         printf("La maxima calificacion es 10");
  82.                     }
  83.                 } while (var[3] > 10);
  84.                 printf("\nCuantos puntos o firmas tuvo el alumno considerando que el maximo es %.2f: ", var[2]);
  85.                 scanf("%f", &var[4]);
  86.                 var[5] = (var[1] / 10) * var[3];
  87.                 var[6] = (var[0] / var[2]) * var[4];
  88.                 res[i] = var[5] + var[6];
  89.                 printf("\nEvaluacion de examen: %.2f \nEvaluacion Continua: %.2f \nsu promedio es de: %.2f en el %d%c parcial\n", var[5], var[6], res[i], i, 248);
  90.             }
  91.             var[8] = (var[7] + res[2] + res[3]) / 3;
  92.             printf("El promedio total de cuarto semestre es: %.2f\n", var[8]);
  93.             break;
  94.         case 3:
  95.             do {
  96.                 printf("Cual es la calificacion del primer parcial: ");
  97.                 scanf("%f", &var[7]);
  98.                 if (var[7] > 10) {
  99.                     printf("La calificacion no puede ser mayor a 10");
  100.                 }
  101.             } while (var[7] > 10);
  102.             do {
  103.                 printf("Cual es la calificacion del segundo parcial: ");
  104.                 scanf("%f", &var[8]);
  105.                 if (var[8] > 10) {
  106.                     printf("La calificacion no puede ser mayor a 10");
  107.                 }
  108.             } while (var[8] > 10);
  109.             *
  110.             printf("Estas evaluando el %d%c parcial\n", i, 248);
  111.             do {
  112.                 printf("Cuantos puntos asignaras de examen en el %d%c parcial: ", i, 248);
  113.                 scanf("%f", &var[1]);
  114.                 if (var[1] > 9) {
  115.                     printf("No puedes poner un valor mayor a 9\n");
  116.                 }
  117.             } while (var[1] > 9);
  118.             var[0] = 10 - var[1];
  119.             printf("Son %.1f puntos de evaluacion continua\n", var[0]);
  120.             printf("\nCuantos puntos o firmas maximas de evaluacion continua en el %d%c: ", i, 248);
  121.             scanf("%f", &var[2]);
  122.             do {
  123.                 printf("\nCuanto fue su calificacion en el examen: ");
  124.                 scanf("%f", &var[3]);
  125.                 if (var[3] > 10) {
  126.                     printf("La maxima calificacion es 10");
  127.                 }
  128.             } while (var[3] > 10);
  129.             printf("\nCuantos puntos o firmas tuvo el alumno considerando que el maximo es %.2f: ", var[2]);
  130.             scanf("%f", &var[4]);
  131.             var[5] = (var[1] / 10) * var[3];
  132.             var[6] = (var[0] / var[2]) * var[4];
  133.             res[i] = var[5] + var[6];
  134.             printf("\nEvaluacion de examen: %.2f \nEvaluacion Continua: %.2f \nsu promedio es de: %.2f en el %d%c parcial\n", var[5], var[6], res[i], i, 248);
  135.             var[9] = (var[7] + var[8] + res[3]) / 3;
  136.             printf("El promedio total de cuarto semestre es: %.2f\n", var[9]);
  137.             break;
  138.         default:
  139.             printf("No hay un %d%c parcial", i, 248);
  140.             break;
  141.     }
  142.     return;
  143. }
  144. *
  145. int main(void) {
  146.     int j;
  147.     char con[4];
  148.     char materia[16];
  149.     char si[3] = {'s', 'i'};
  150.     system("color 3f");
  151.     do {
  152.         printf("-----------------COLEGIO TECNOLOGICO DE MEXICO---------------\n");
  153.         printf("\nÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»");
  154.         printf("\nº * .:Evaluacion y costos de 4%c Smestre de Informatica:. * *º", 248);
  155.         printf("\nÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹");
  156.         printf("\nº * * * * * * * * * * * * * * * * * * * * * * * * * * * * * º");
  157.         printf("\nº * * * 1.- Promedios * * * * * * * *2.- Costos * * * * * * º");
  158.         printf("\nº * * * * * * * * * * * * * * * * * * * * * * * * * * * * * º");
  159.         printf("\nº * * * * * * * * * * * *3.-Salir * * * * * * * * * * * * * º");
  160.         printf("\nÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
  161.         printf(" * * * * * * * * * * * Que hara? ");
  162.         scanf("%d", &op[7]);
  163.         switch (op[7]) {
  164.             case 1:
  165.                 for (j = 9; j >= 0; j--) {
  166.                     printf("\nÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n");
  167.                     printf("\nMATERIAS DISPONIBLES:\nIngles IV\nCalculo Diferencial\nDerecho\nCalculos Financieros II\nQuimica II\nFisica II\nOfimatica\nProgramacion Estructurada\nContabilidad\n");
  168.                     printf("\nEscriba la materia a evaluar: ");
  169.                     fflush(stdin);
  170.                     gets(materia);
  171.                     printf("\nEsta evaluando %s\n", materia);
  172.                     parcial();
  173.                     printf("\nAcaba de evaluar %s\n\a", materia);
  174.                     *
  175.                     printf("ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
  176.                     printf("\n\nDesea evaluar otra materia? SI o NO\n");
  177.                     fflush(stdin);
  178.                     gets(con);
  179.                     strcmp(con, si);
  180.                     if (strcmp(con, si) == 0) {
  181.                         * * * * * * *j--;
  182.                         * * * * * * *
  183.                     } else {
  184.                         * * * * * * * * * * j = 0;
  185.                         * * * * * * * * * *
  186.                     }
  187.                 }
  188.                 * * *break;
  189.                 *
  190.                 * * *case 2:
  191.                 * * *printf("Costos y Descuentos por \"BECAS\"\n");
  192.                 * * *break;
  193.                 * * *
  194.         }
  195.         * * *if (op[7] > 3) {
  196.             * * * * * * * * *printf("Opcion invalida intente otra vez");
  197.             * * * * * * * * *
  198.         }
  199.     } while (op[7] > 3);
  200.     printf("Hasta Luego\n");
  201.     system("pause");
  202.     return 0;
  203. }