Vous êtes sur la page 1sur 5

Algoritmo del problema

Capturadatosalumoymenudeopciones
1. Inicia algoritmo
2 Creo las librerias de:
2.1 Salida estandar
2.1 Librera estandar
2.2 Manejo de cadenas
3. Defino las constantes y variables
3.1 Defino el numero mximo de alumnos a 10
3.2 Tipo carcter:
3.2.2 Char nom [256], nid[10], carrera[64], turno[16]
3.2.3 Float promedio, calificaciones, max,
3.2.4 int i, tmat, tves, tnoc, index, action, exit,
3.2.4 Creo un array de objeto alumno alumnos[MaxAlumno]
4. Creo las funciones del menu
4.1 Opcion1, calcular el promedio general
4.1.1Declaro las variables:
4.1.1.1 float calificaciones,
4.1.1.2 int i,
4.1.2 Barrido total del array alumnos, sumando los promedios a la
variable calificaciones.
4.1.2.1 Inicializo i=0, hasta llegar a 10 alumnos, sumandole
a MaxAlumno uno: for(i=0; i<MaxAlumnos; i++)
4.1.3 A calificaciones le sumo el promedio , que debe asignarse al
arrego de alumnos, como se muestra a continuacin:
calificaciones += alumnos[i].promedio;
4.1.4 Calificaciones/MaxAlumnos
4.1.5 Escribimos el resultados: Promedio general actual
End
4.2 Opcion2, calculo los alunmos en turno

4.2.1 Declaro las variables


4.2.1.1 int 1, tmat=0, tves=0, tnoc=0
4.2.2 Barrido total del array alumnos, sumando los promedios a la
variable calificaciones.
4.2.2.1 Inicializo i=0, hasta llegar a 10 alumnos, sumandole
a MaxAlumno uno: for(i=0; i<MaxAlumnos; i++)
4.2.3 Comparamos el turno de los alumnos, con el turno deseado
4.2.3.1 Si el turno matutino es igual al arreglo
alumno[i].turno==0
4.2.3.1.1 Incremento en uno
tmat++
4.2.3.2 Si el turno vespertino es igual al arreglo
alumno[i].turno==0
4.2.3.1.1 Incremento en uno tves+
+
4.2.3.3 Si el turno nocturno es igual al arreglo
alumno[i].turno==0
4.2.3.1.1 Incremento en uno tnoc+
+
end
4.2.4 Si turno matutino es mayor a vespertino y nocturno if
tmat>tves && tmat >tnoc
4.2.4.1 Escribir el turno con mayor cantidad de alumnos es
el turno matutino
End
4.2.5 Otro
4.2.6 Si turno vespertino es mayor a nocturno y matutino
if(tves > tmat && tves > tnoc)
4.2.6.1 Escribir el turno con mayor cantidad de alumnos es
el vespertino
4.2.6.2 Otro
4.2.6.3 Escribir el turno con mayor cantidad de alumnos es
el nocturno
End
End
4.3 Opcion 3, derminar el nombre del alumno con mejor promedio
4.3.1 Declaro las variables
4.3.1.1 float max=0.0f

int 1, tmat=0, tves=0, tnoc=0


4.3.2 Barrido total del array alumnos
a

4.3.2.1 Inicializo i=0, hasta llegar a 10 alumnos, sumandole


MaxAlumno uno: for(i=0; i<MaxAlumnos; i++)

4.3.3 Realizamos comparacin de el promedio de cada


alumno, mediante un barrido if (alumno[i].promedio>max)
4.3.4 A la variable max le asigno el arregode alumno
con el promedio max=alumno[i].promedio
4.3.5 index = i
End
End
4.3.5 Escribo mejor promedio
alumnos[index].promedio,alumnos[index].nombre)
End
5. Menu principal
5.1 Declaracin de variables locales
int action, i, exit = 0,
5.2 Se pone el objeto a total cero, vacio
5.3 Se crea el mensaje inicial del programa
5.4 Escribo Bienvenido al gestor escolar
5.5 Escribo Ingrese los datos de los alumnos
5.6 Escribo Detalles y consideraciones de cada campo requerido
5.7 Escribo Nombre: apellido paterno, apellido materno, primer nombre
5.7 Escribo Numero de control: hasta 10 digitos alfanumericos
5.8 Escribo Turno: matutino, vespertino, nocturno
5.9 Barrido total del arreglo alumnos for(i=0; i<MaxAlumnos; i++)
5.10 Introducimos los valores de los alumnos
5.10.1 Mostramos el numero de alumno que estamos
introduciendo
5.10.1.1 Escribo Alumno i+1

5.10.2 Obtenemos el nombre del alumno como cadena de texto


(Permitiendo espacios o comas entre palabras.)
5.10.2.1 Escribo Nombre del alumno
5.10.2.2 Leemos alumnos[i].nombre
5.10.3 Obtenemos el numero de control (nid) del alumno como
cadena de texto
5.10.3.1 Escribo Numero de control
5.10.3.2 Leo alumnos[i].nid
5.10.4 Obtenemos la carrera del alumno como cadena de texto
5.10.4.1 Escribo Carrera
5.10.4.2 Leo alumnos[i].carrera
5.10.5 Obtenemos lel turnodel alumno como cadena de texto
5.10.5.1 Escribo Turno
5.10.5.2 Leo alumnos[i].turno
5.10.6 Obtenemos el promedio del alumno como flotante, numero
decimal
5.10.6.1 Escribo promedio
5.10.6.2 Leo alumnos[i].promedio
End
6.1 Bucle indefinido, mientras no se pueda salir while(exit != 1)
6.2 Limpiamos la pantalla
6.3 Dibujamos el menu en cada ciclo
6.3.1 Escribo Bienvenidos al gestor escolar
6.3.2 Escribo Selecciona alguna de las siguientes acciones disponibles
6.3.2 Escribo 1.Obtener el promedio general de los alumnos
6.3.3 Escribo 2. Determinar el turno que tiene mas alumnos inscritos
6.3.4 Escribo 3. Obtener el nombre del alumno con el promedio genral
ms alto de la escuela
6.3.5 Escribo 4. Salir
6.3.6 Escribo Opcion
6.3.7 Leo action

6.3.8 Se transfiere action a la sentencia ejecutada (swithc (action)


6.3.9 Ejecutar la opcion 1, Case 1
6.3.9.1 Ejecutar opcion 1
6.3.10 Ejecutar la opcion 2, Case 2
6.3.10.1 Ejecutar opcion 2
6.3.11 Ejecutar la opcion 3, Case 3
6.3.11.1 Ejecutar opcion 3
6.3.12 Ejecutar la opcion 4, Case 4
6.3.12.1 Configuramos la var exit a 1, lo que hara que el
while se rompa y salgamos.
Exit = 1
6.3.13 Si se teclea una opcion diferente, no ser valida
6.3.14 Escribo Opcion no valida, reintente con alguna correcta
End
6.3.15 Esperamos a que precione una tecla y continuamos con el
menu
End
End

Diagrama de flujo del problema

Vous aimerez peut-être aussi