Está en la página 1de 7

Metodología para Resolver Problemas

ENUNCIADO: Dada la cantidad de estudiantes y la cantidad de notas por


estudiante imprima el promedio de cada estudiante, la cantidad y porcentaje de
aprobados.

SOLUCIÓN
I. Planteamiento General del Problema

PROCESO

ENTRADA DE DATOS INFORMACIÓN DE SALIDA

-Cantidad de Estudiantes -Promedio de cada estudiante


-Cantidad de Notas -Cantidad de Aprobados
-Porcentaje de Aprobados

II. Diagrama Jerárquico Modular (Diagrama Top-Down, Análisis Jerárquico


Modular
PC14004Guia8Ej9

Program

Main

ValidarNotas CantidadNotas CantidadEstudiantes

III. Análisis del problema


a. Definición de Variables de Salida
Variables de Salida
Nombre Tipo Descripción
promedio Entero Contiene el promedio de las notas de cada estudiante
aprobados Entero Contiene la cantidad de alumnos aprobados
porcentaje Entero Contiene el porcentaje total de alumnos aprobados

b. Definición de Datos de Entrada:


Nombre Tipo Descripción
cantidadEstudiantes Entero Contiene la cantidad total que el usuario
desea ingresar por iteración.
cantidadNotas Entero Contiene la cantidad de notas que el usuario
desea ingresar por cada iteración.
c. CONSTANTES:
Nombre Tipo Descripción Valor
NO HAY CONSTANTES

d. Restricciones:
cantidadEstudiantes > 0
cantidadNotas > 0
nota >= 0 && nota <= 10

e. Proceso
cantidadEstudiantes
cantidadNotas
n
e
aprobados = 0
porcentaje = 0
notas
suma = 0
promedio = 0
convertPromedio
bandera = “si”

Hacer
cantidadEstudiantes = CantidadEstudiantes(“Ingrese la cantidad
de estudiantes que desea ingresar”)

cantidadNotas = CantidadNotas(“Ingrese la cantidad de notas por


alumno que dese ingresar”)

Hacer para e = 1 hasta cantidadEstudiantes


Escribir “Alumno # {e}”
Hacer para n = 1 hasta cantidadNotas
Notas = ValidarNotas(“Ingrese la Nota {n}”)
suma = suma + notas
promedio = suma / n
hacer n = n + 1
suma = 0
convertPromedio = Math.Round(promedio, 1)
Escribir “El promedio de las notas es {convertPromedio}

si (convertPromedio >= 6.0)


aprobados = aprobados + 1

porcentaje = (aprobados * 100) / cantidadEstudiantes


hacer e = e + 1

Escribir “La cantidad de aprobados es {aprobados} y su


porcentaje es {porcentaje}
Escribir “Desea continuar ingresando datos? (si/no)”
Leer bandera

Aprobados = 0
cantidadEstudiantes = 0
Mientras bandera = “si”
Escribir “Fin de la ejecución”

f. Definición de Variables de Proceso


Nombre Tipo Descripción
n entero Contador de notas
e entero Contador de estudiantes
notas real Contiene las notas y valida que estén en el
rango deseado.
suma Real Contiene la suma total de notas por
estudiante
convertPromedio Real Contiene el promedio, pero lo limita a
solamente un decimal.
bandera Cadena Contiene la respuesta del usuario, si desea
continuar o no utilizando el software.

IV. Diseño de la Solución:


Módulo Principal Main
Diseño de la Solución por Módulos

Módulo: CantidadEstudiantes
Estático = Si
¿Qué permite hacer CantidadEstudiantes? Muestra en pantalla un
mensaje para indicarle al usuario que debe de ingresar la cantidad de
Estudiantes que desee ingresar. Da la indicación de ingresar la
información mientras la cantidad sea menor o igual a 0.
Retorna estudiantes de tipo entero.

Módulo: CantidadNotas
Estático = Si
¿Qué permite hacer CantidadNotas? Muestra en
pantalla un mensaje indicándole al usuario que
ingrese la cantidad de notas que desea ingresar
por cada estudiante. Muestra esta indicación
mientas notas sea menor o igual a 0. Retorna
notas de tipo entero.
Módulo: ValidarNotas
Estático = Si
¿Qué permite hacer ValidarNotas? Muestra en mensaje en pantalla para decirle al
usuario que ingrese las calificaciones de los estudiantes. Mientras la variable “notas”
sea menor a 0 o mayor a 10 mostrara el mismo mensaje en pantalla.
Retorna notas de tipo real.
V. CODIFICACIÓN
//Guia: 8
//Fecha: 27 de Abril de 2022
//Autor: Fátima Emperatriz Pérez Cuéllar
//Carnet: PC14004
//GL: 17
//Instructor: Ing. Mauricio Bonilla

static void Main(string[] args)


{
//Declarando variables
int cantidadEstudiantes, cantidadNotas, n, e, aprobados = 0,
porcentaje = 0;
double notas, suma = 0, promedio = 0, convertPromedio;
string bandera = "si";

//Identificación del Programa en Pantalla


Console.WriteLine("Guia 8 Ej9: Programa para conocer el promedio de
notas de los estudiantes y la cantidad y porcentaje de aprobados");
Console.WriteLine("Autora: Fátima Emperatriz Pérez Cuéllar,
Carnet:PC14004");
Console.WriteLine(" ");

do
{
//Entrada de Datos
cantidadEstudiantes = CantidadEstudiantes("\nIngrese la
cantidad de Estudiantes que desea ingresar: ");
cantidadNotas = CantidadNotas("Ingrese la cantidad de notas que
desea ingresar: ");

//Proceso
for (e = 1; e <= cantidadEstudiantes; e++)
{
Console.WriteLine("\nAlumno [{0}]", e);

for (n = 1; n <= cantidadNotas; n++)


{
notas = ValidarNotas($"*Ingrese la nota {n}: ");
suma += notas;
promedio = suma / n;
}
suma = 0;
convertPromedio = Math.Round(promedio, 1);
Console.WriteLine("El promedio de las notas es: {0}",
convertPromedio);

if (convertPromedio >= 6.0)


aprobados++;
porcentaje = (aprobados * 100) / cantidadEstudiantes;
}

//Salida De Datos
Console.WriteLine("\nLa cantidad de aprobados es: {0} y su
porcentaje es {1}%", aprobados, porcentaje);
Console.WriteLine("\n\n¿Desea continuar ingresando datos?
(si/no)");
bandera = Console.ReadLine().ToLower();

aprobados = 0;
cantidadEstudiantes = 0;
Console.Clear();
}
while (bandera == "si");
Console.WriteLine("Fin de la ejecución");
Console.ReadKey();
}
static int CantidadEstudiantes(string mensaje)
{
int estudiantes;
do
{
Console.Write(mensaje);
estudiantes = int.Parse(Console.ReadLine());
}
while (estudiantes <= 0);

return estudiantes;
}

static int CantidadNotas(string mensaje)


{
int notas;
do
{
Console.Write(mensaje);
notas = int.Parse(Console.ReadLine());
}
while (notas <= 0);

return notas;
}

static double ValidarNotas(string messaje)


{
double notas;
Console.Write(messaje);
notas = double.Parse(Console.ReadLine());

while (notas < 0 || notas > 10)


{
Console.Write(messaje);
notas = double.Parse(Console.ReadLine());
}
return notas;
}
}

También podría gustarte