Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Ernesto sandoval
1. Alumno:
Ernesto J. Sandoval L.
C.I: 18.054.539
Universidad Fermín Toro
Facultad De Ingeniera
Cabudare Estado Lara
Noviembre 2014
Ingeniería Eléctrica
Sección: SAIA C
programa en C
2. 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)
3. 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.
4. 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
5. printf("CALCULO DEL PROMEDIO DE %d NOTAS nn", n);
printf("A continuacion, ingrese las notas obtenidas y porcentajes de cada
calificacionnn");
for (int i=0; i<n; i++)
{
printf("Nota [%u]: ", i+1);
scanf("%d", ¬a[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 nn", prom);
}
printf("***nTotal Evaluado: %3.0f%%n", porc_acum);
printf("Promedio Final: %5.2fnn", prom);
if (prom >= min)
{
printf("La asignatura fue APROBADA!");
} else {
6. printf("La asignatura fue REPROBADA!");
}
printf("nnPresione 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..
7. 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).