Ernesto sandoval

7
Alumno: Ernesto J. Sandoval L. C.I: 18.054.539 Noviembre 2014 Universidad Fermín Toro Facultad De Ingeniera Cabudare Estado Lara Ingeniería Eléctrica Sección: SAIA C programa en C

Transcript of Ernesto sandoval

Page 1: Ernesto sandoval

Alumno: Ernesto J. Sandoval L.

C.I: 18.054.539

Noviembre 2014

Universidad Fermín ToroFacultad De IngenieraCabudare Estado Lara

Ingeniería Eléctrica Sección: SAIA C

programa en C

Page 2: Ernesto sandoval

Lo normal para sacar este tipo de promedios de 5 notas con ponderaciones diferentes (distintos porcentajes de "peso" por evaluación), es que se calcule la sumatoria del producto de las notas acumuladas por sus respectivos porcentajes (nota*porcentaje) y luego, una vez hallada esa sumatoria, dividir nuevamente por la sumatoria de los porcentajes ya evaluados. Matemáticamente, esto se expresaría más o menos como sigue:

Promedio = sumatoria(nota*porcentaje) / sumatoria(porcentajes)

Por supuesto, considerando el hecho de que porcentaje es un valor dividido por 100 (20% = 0,2). Aunque, matemáticamente se puede demostrar que da igual resultado si dividimos los respectivos porcentajes entre 100, o si no lo hacemos.

Entonces, si tenemos, por ejemplo, una nota d 10 con valor 20% una nota de 20 con 15% tendremos lo siguiente:

Promedio = ( 10*0,2 + 20*0,15 ) / (0,2 + 0,15) Promedio = ( 2 + 3 ) / (0,35)

Page 3: Ernesto sandoval

Promedio = 14,280

Nota: obsérvese que, independientemente de cuál sea la escala de calificaciones, si asumimos que todas las puntuaciones son sobre la misma base (en este ejemplo en particular, son notas sobre 100 puntos) igual este procedimiento siempre funciona para cualquier escala.

*** PROGRAMA *** Entonces... hablando ahora del código en C++, la solución del problema puede considerar el uso de 2 arreglos: uno para almacenar los porcentajes de cada evaluación, y otro para ir almacenando las respectivas notas obtenidas. Adicionalmente, podemos usar un ciclo FOR para ir agregando calificaciones (con sus respectivos porcentajes) e ir notificando el cálculo acumulado.

Page 4: Ernesto sandoval

Con todo esto, tenemos entonces algo como esto:

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

int main() { int n = 4; // la cantidad de notas a evaluar float min=10; // Fijamos cuál es la nota mínima aprobatoria, para poder emitir el "veredicto" final int nota[n]; // arreglo para almacenar las notas int porc[n]; // arreglo para almacenar los porcentajes respectivos float prod_acum = 0; // almacenaremos temporalmente el acumulado del producto de Nota x Porcentaje float porc_acum = 0; // almacenaremos temporalmente el acumulado de Porcentajes evaluados float prom = 0; // variable para almacenar el Promedio Calculado

Page 5: Ernesto sandoval

printf("CALCULO DEL PROMEDIO DE %d NOTAS \n\n", n); printf("A continuacion, ingrese las notas obtenidas y porcentajes de cada calificacion\n\n");

for (int i=0; i<n; i++) { printf("Nota [%u]: ", i+1); scanf("%d", &nota[i]); printf("Porcentaje: "); scanf("%d", &porc[i]); prod_acum = prod_acum + (nota[i]*porc[i]); porc_acum = porc_acum + porc[i]; prom = prod_acum/porc_acum; printf("Promedio Acumulado: %5.2f \n\n", prom); } printf("***\nTotal Evaluado: %3.0f%%\n", porc_acum); printf("Promedio Final: %5.2f\n\n", prom); if (prom >= min) { printf("La asignatura fue APROBADA!"); } else {

Page 6: Ernesto sandoval

printf("La asignatura fue REPROBADA!"); } printf("\n\nPresione cualquier tecla para terminar"); getch(); return 0; }

--- Consideraciones Adicionales:

1.- Si nos apegamos estrictamente a la definición del problema, solo se pide el valor final del promedio, de modo que no es realmente necesario almacenar los valores de las notas y porcentajes. Es decir, podemos hacer esto mismo, pero sin ir guardando los valores en las posiciones nota[i] y porc[i], usando simplemente variables temporales simples para recibir los valores por teclado y hacer los cálculos (p.ej: nota, en lugar de nota[i], siendo nota una variable int). Sin embargo, el uso de estos arreglos permitiría incorporar cualquier análisis adicional como: nota más alta, mejor calificación, etc..

Page 7: Ernesto sandoval

2.- Por otro lado, la definición del problema, tal como está, define explícitamente los valores porcentuales las 4 notas parciales, de modo que para este caso en particular, podríamos establecer directamente esos valores en la definición del arreglo, y no solicitarlos por teclado. Es decir: --> int porc[n]={25,25,20,30} y eliminamos las 2 líneas relativas a la captura de esos valores por teclado: --> printf("Porcentaje: "); --> scanf("%d", &porc[i]); 

3.- Se debería incorporar algunas validaciones adicionales para asegurarnos que los datos recibidos por teclado no introduzcan algún error a nuestro cálculo. Por ejemplo, debemos asegurarnos de que el porcentaje introducido no sea 0 (no solo no tendría sentido una evaluación de 0%, sino que además generaría un error de cálculo al dividir luego por 0). También se podría validar que el porcentaje total sea 100% (para el caso en el que se solicita por teclado el porcentaje individual de cada nota).