Está en la página 1de 19

UNIVERSIDAD NACIONAL DE TRUJILLO

Facultad de Ciencias Físicas y Matemáticas


Escuela Profesional de Informática

REGISTRO DE VACUNACIÓN DE LOS CIUDADANOS UTILIZANDO


ALGORITMOS DE FUERZA BRUTA

BENJAMIN CASTRO CAMPOS


JOSE ALBERTO CHACON REYES

Trujillo - La Libertad
2022
Resumen
Tomando en cuenta los últimos sucesos en nuestro país y el mundo, pudimos observar que el
problema que más nos ha estado afectando en estos últimos años es la COVID-19, por ello ideamos
un programa, utilizando el C++ como lenguaje de programación, que registre los datos de los
ciudadanos vacunados como no vacunados, para de esta forma poder mostrar unos datos
estadísticos con los datos ingresados. Dicho programa utiliza algoritmos de fuerza bruta para poder
realizar diferentes tipos de búsqueda, por ejemplo, la búsqueda por DNI, apellido y número de
orden ingresado. Nuestro programa también notifica cuando ya ha pasado más de 5 meses desde
la última vacuna de la persona registrada, para que de esta forma dicha persona sepa que ya es hora
de tener una nueva dosis.
Índice general
Resumen .............................................................................................................................................. 2
Capítulo 1: Introducción .................................................................................................................... 4
1.1. Realidad problemática ...................................................................................................... 4
1.2. Identificación del problema .............................................................................................. 4
Capítulo 2: Problema y metodología ................................................................................................. 5
2.1. Planteamiento o formulación del problema ................................................................... 5
2.2. Método del trabajo ........................................................................................................ 5
Capítulo 3: Implementación y pruebas ............................................................................................. 6
3.1. Algoritmo y su descripción ............................................................................................ 6
3.2. Explicación de la implementación y pruebas ............................................................... 15
Capítulo 4 .......................................................................................................................................... 18
Resultados y discusión de la monografía ......................................................................................... 18
4.1. Análisis de resultados .................................................................................................. 18
4.2. Conclusiones ............................................................................................................... 18
Referencias bibliográficas ................................................................................................................ 19
Capítulo 1: Introducción
1.1. Realidad problemática
En estos últimos años hemos tenido un problema el cual nos ha afectado de varias maneras, tanto
psicológica, emocional y físicamente, hablamos del COVID-19 por eso hemos diseñado un
algoritmo en el cual podemos tener registrado a las personas vacunadas y no vacunadas y poder
mandar una alerta, si ya pasó más de 5 meses de su última vacuna, así poder tener una población
más controlada. (Figura 1.1)

Figura 1.1 Estadística numérica de principales problemas en el Perú.

1.2. Identificación del problema


El rebrote de contagios, que se dio en la segunda ola de la Covid-19 en el año 2021, se fue
incrementando debido al temor de las diversas opiniones en los medios de comunicación y redes
sociales, en contra de la vacunación para el Covid-19, haciendo que las personas de mayor edad, y
personas vulnerables que sufren de algún otro tipo de enfermedad, rechacen la vacuna.
Capítulo 2: Problema y metodología
2.1. Planteamiento o formulación del problema
¿Será factible aportar al Ministerio de Salud, con un programa de aplicación de base de datos,
para llevar un conteo a cerca de las personas vacunadas, no vacunadas, y personas que necesitan
el refuerzo de la vacuna en contra del Covid-19?

2.2. Método del trabajo


a) Se llevó a cabo la identificación de la realidad problemática a realizar, seguido de esto,
pasamos a hacer la formulación de la interrogante del problema.
b) Como segundo paso realizamos un bosquejo, pensando en propuestas para la solución del
problema y contenido de nuestro informe.
c) De conocimientos previos en programación, optamos por utilizar el lenguaje C + + e
insertamos una sintaxis que nos ayudó a recaudar una base de datos de ciertas personas
para la primera prueba de aplicación del sistema.
d) Pasamos a insertar los datos y programamos para una búsqueda por DNI, apellido,
número de orden ingresado.
e) Con la información obtenida de nuestra base de datos, finalmente pudimos realizar los
gráficos estadísticos, pudiendo así obtener porcentajes de las personas vacunadas y no
vacunadas.

De acuerdo con Lara Muñoz (2013), para el desarrollo del método debe presentarse un bosquejo de la
manera en que se propone llevar a cabo la investigación, es decir, el camino a seguir o los pasos a
seguir para realizar una cosa. Cuando más complejo sea el bosquejo más fácil se desarrollará el
proceso de investigación. Se utiliza el vocablo método en vez de metodología, ya que este último se
considera equivocado, en el sentido en que se le utiliza comúnmente en informes de investigación.
Capítulo 3: Implementación y pruebas
3.1. Algoritmo y su descripción

acción datos_estadisticos(nodo *lista, int i)


Escribir<<"PERSONAS VACUNADAS Y NO VACUNADAS:"
Escribir("N%cMERO",233)
Escribir<<"PORCENTAJES"
Escribir<<"PERSONAS VACUNADAS:"
Escribir<<v
Escribir<<"PERSONAS NO VACUNADAS:"
Escribir<<nv
Escribir<<"LAS VACUNAS UTILIZADAS EN LAS PERSONAS VACUNADAS SON:"
Escribir("N%cMERO",233)
Escribir<<"PORCENTAJES"
Escribir<<"PFIZER"
cout<<vpf
Escribir<<"SINOPHARM"
Escribir<<vs
Escribir<<"ASTRAZENECA"
Escribir<<va;
Escribir<<"OTRA VACUNA"
Escribir<<vo
Escribir("EL N%cMERO DE DOSIS QUE TIENEN LA PERSONAS VACUNADAS
ES:",233)
Escribir("N%cMERO",233)
Escribir<<"PORCENTAJES"
Escribir<<"UNA DOSIS"
Escribir<<d
Escribir<<"DOS DOSIS
Escribir<<d2
Escribir<<"TRES DOSIS
Escribir<<d3
Escribir<<"CUATRO DOSIS"
Escribir<<d4
Escribir<<setprecision(2)<<fixed<<vp<<"%"
Escribir<<nvp<<"%"
Escribir<<vpfp<<"%"
Escribir<<vsp<<"%"
Escribir<<vap<<"%"
Escribir<<vop<<"%"
Escribir<<d1p<<"%"
Escribir<<d2p<<"%"
Escribir<<d3p<<"%"
Escribir<<d4p<<"%"
system("pause")
system("cls")
contar_PFIZER(nodo *lista)
nodo *actual = new nodo()
actual = lista

Mientras que (actual sea diferente NULL) hacer

x = strcmp(actual->vacuna,"PFIZER")
SI (x es igual 0)
n1++

actual = actual->siguiente

devuelve n1

contar_ASTRAZENECA(nodo *lista)
nodo *actual = new nodo()
actual = lista

Mientras que(actual es diferente NULL)hacer


x = strcmp(actual->vacuna,"ASTRAZENECA")
Si (x es igual 0)
n1++

actual = actual->siguiente

devuelve n1

contar_SINOPHARM(nodo *lista)
nodo *actual = new nodo()
actual = lista

Mientras que(actual es diferente NULL)hacer


x = strcmp(actual->vacuna,"SINOPHARM")
Si(x es igual 0)
n1++

actual = actual->siguiente

devuelve n1
contar_OTRA_VACUNA(nodo *lista)
nodo *actual = new nodo()
actual = lista

Mientras que (actual es diferente NULL)


x = strcmp(actual->vacuna,"OTRA")
Si(x es igual 0)
n1++

actual = actual->siguiente

devuelve n1

contar_dosis1(nodo *lista)
nodo *actual = new nodo()
actual = lista

Mientras que(actual!=NULL)hacer
Si (actual->num_dosis es igual 1)
n1++

actual = actual->siguiente;

devuelven1;

contar_dosis2(nodo *lista)
nodo *actual = new nodo()
actual = lista

n1 = 0

Mientras que(actual!=NULL)hacer
Si(actual->num_dosis es igual 2)
n1++

actual = actual->siguiente

devuelve n1

contar_dosis3(nodo *lista)
nodo *actual = new nodo()
actual = lista

n1 = 0
Mientras que(actuales diferente NULL)hacer
Si(actual->num_dosis es igual 3)
n1++

actual = actual->siguiente

devuelve n1

contar_dosis4(nodo *lista)
nodo *actual = new nodo()
actual = lista

n1 = 0

Mientras que(actual es diferente NULL)hacer


Si(actual->num_dosis es igual 4)
n1++

actual = actual->siguiente

devuelve n1

contar_vacunadas(nodo *lista)
nodo *actual = new nodo()
actual = lista

n1 = 0

Mientras que(actual!=NULL)hacer
Si(actual->vacunado == 1)
n1++

actual = actual->siguiente

devuelve n1

buscar_apellidos(nodo *lista, char a[50])


nodo *actual = new nodo()
actual = lista

x,s = 0

Mientras que(actual es diferente NULL)hacer


x = stricmp(actual->datos.apellidos,a
Si(x es igual 0)
Escribir<<"Nombres: "<<actual->datos.nombres
Escribir<<"Apellidos: "<<actual->datos.apellidos
Escribir<<"DNI: "<<actual->datos.dni
Escribir<<"Edad: "<<actual->datos.edad
Escribir("Direcci%cn: ",162);cout<<actual->datos.direccion
Escribir<<"Vacunado: "
Si(actual->vacunado es igual 1)
Escribir("S%c",161)
Escribir<<"Vacuna: "<<actual->vacuna
Escribir("N%cmero de dosis: ",163);cout<<actual->num_dosis
Si(actual->alerta es igual 1)
Escribir("Deber%ca vacunarse, ha pasado mucho tiempo
desde su %cltima vacuna",161,163)

system("pause")

si_no
Escribir<<"No"
system("pause")

system("cls")
s++
system("COLOR A")

actual = actual->siguiente

Si(s es igual 0)
Escribir<<"No se han encontrado datos con los apellidos ingresados."
system("pause")
system("cls")

acción buscar_orden(nodo *lista, int n)


nodo *actual = new nodo()
actual = lista

s=0

Mientras que(actual!=NULL)hacer
Si(actual->num_orden == n)
Escribir<<"Nombres: "<<actual->datos.nombres
Escribir<<"Apellidos: "<<actual->datos.apellidos
Escribir<<"DNI: "<<actual->datos.dni
Escribir<<"Edad: "<<actual->datos.edad
Escribir("Direcci%cn: ",162);cout<<actual->datos.direccion
Escribir<<"Vacunado: "
Si(actual->vacunado es igual 1)
Escribir("S%c",161
Escribir<<"Vacuna: "<<actual->vacuna
Escribir("N%cmero de dosis: ",163);cout<<actual->num_dosis
Si(actual->alerta es igual 1)
Escribir("Deber%ca vacunarse, ha pasado mucho tiempo
desde su %cltima vacuna",161,163)

system("pause")

si_no
cout<<"No"
system("pause")

system("cls")
s++
system("COLOR A")

actual = actual->siguiente

Si(s es igual 0)
Escribir<<"No se han ingresado datos en este numero de orden."
system("pause")
system("cls")

acciòn buscar_DNI(nodo *lista, int dni)


nodo *actual = new nodo()
actual = lista

s=0

Mientras que(actual es diferente NULL)hacer


Si(actual->datos.dni es igual dni)
Escribir<<"Nombres: "<<actual->datos.nombres
Escribir<<"Apellidos: "<<actual->datos.apellidos
Escribir<<"DNI: "<<actual->datos.dni
Escribir<<"Edad: "<<actual->datos.edad
Escribir("Direcci%cn: ",162);cout<<actual->datos.direccion
Escribir<<"Vacunado: "
Si(actual->vacunado es igual 1)
Escribir("S%c",161)
Escribir"Vacuna: "<<actual->vacuna
Escribir"N%cmero de dosis: ",163)Escribir<<actual->num_dosis
Si(actual->alerta es igual 1)
Escribir("Deber%ca vacunarse, ha pasado mucho tiempo
desde su %cltima vacuna",161,163)
system("pause")

Si_no
cout<<"No"
system("pause")

system("cls")
s++
system("COLOR A")

actual = actual->siguiente

Si(s es igual 0)
cout<<"No se han encontrado datos con el DNI ingresado."
system("pause")
system("cls")

accion ingresar_datos(nodo *&lista, int i


char o
nodo *nuevo_nodo = new nodo()

Escribir<<"INGRESAR DATOS DE LA PERSONA "<<i


fflush(stdin)
Escribir<<"Ingrese los nombres de la persona: "
cin.getline(nuevo_nodo->datos.nombres,50,'\n')
Escribir<<"Ingrese los apellidos de la persona: "
cin.getline(nuevo_nodo->datos.apellidos,50,'\n')
Escribir<<"Ingrese la edad de la persona: "
cin>>nuevo_nodo->datos.edad
fflush(stdin)
Escribir("Ingrese la direcci%cn de la persona: ",162)
cin.getline(nuevo_nodo->datos.direccion,50,'\n')
Escribir"Ingrese el DNI de la persona: "
cin>>nuevo_nodo->datos.dn
Escribir("%cLa persona est%c vacunada?(0/1): ",168,160)
cin>>nuevo_nodo->vacunado
Si(nuevo_nodo->vacunado es igual 1)
Escribir<<"Seleccione la vacuna utilizada:"
Escribir<<"a) PFIZER"
Escribir<<"b) ASTRAZENECA"
Escribir<<"c) SINOPHARM"
Escribir<<"d) OTRA"
Escribir("Ingrese su opci%cn: ",162)
Leer>>o
Mientras que (o es diferente 'a'&&o es diferente'b'&&o es diferente'c'&&o es
diferente'd'&&o es diferente'A'&&o es diferente'B'&&o es diferente'C'&&o es diferente'D')hacer
Escribir<<" "
Escribir("Opci%cn no v%clida, ingrese de nuevo: ",162,160)
Leer>>o

segun(o) sea
case 'a':
strcpy(nuevo_nodo->vacuna,"PFIZER")
break
case 'A':
strcpy(nuevo_nodo->vacuna,"PFIZER")
break
case 'b':
strcpy(nuevo_nodo->vacuna,"ASTRAZENECA")
break
case 'B':
strcpy(nuevo_nodo->vacuna,"ASTRAZENECA")
break;
case 'c':
strcpy(nuevo_nodo->vacuna,"SINOPHARM")
break
case 'C':
strcpy(nuevo_nodo->vacuna,"SINOPHARM")
break
case 'd'
strcpy(nuevo_nodo->vacuna,"OTRA")
break
case 'D':
strcpy(nuevo_nodo->vacuna,"OTRA")

Escribir("Ingrese el n%cmero de dosis de la persona: ",163)


fflush(stdin)
Leer>>nuevo_nodo->num_dosis
Mientras que (nuevo_nodo->num_dosismayor que 4 o nuevo_nodo->num_dosis
menor que1) hacer
Escribir<<" "
Escribir("Valor no v%clido. Recuerde ingresar como valor 1 - 4. Ingrese de
nuevo: ",160)
Leer>>nuevo_nodo->num_dosis

Escribir("Ingrese el a%co de su %cltima vacuna: ",164,163)


Leer>>nuevo_nodo->year_ult_vac
Mientras que (nuevo_nodo->year_ult_vac mayor que 2022 o nuevo_nodo-
>year_ult_vac menor que 1)hacer
Escribir<<" "
Escribir("A%co no v%clido. Ingrese de nuevo: ",164,160)
Leer>>nuevo_nodo->year_ult_vac

Si(nuevo_nodo->year_ult_vac menor que 2022)


nuevo_nodo->alerta = 1
Escribir("Ingrese el mes de su %cltima vacuna(1-12): ",163);
Leer>>nuevo_nodo->mes_ult_vac
Minetras que (nuevo_nodo->mes_ult_vacmayor que 12 o nuevo_nodo-
>mes_ult_vac menor que1)hacer
Escribir<<" "
Escribir("Mes no v%clido. Ingrese de nuevo: ",160)
Leer>>nuevo_nodo->mes_ult_vac

Escribir("Deber%ca vacunarse su dosis de refuerzo, ha pasado mucho tiempo


desde su %cltima vacuna",161,163)

si_no
Escribir("Ingrese el mes de su %cltima vacuna: ",163)
Leer>>nuevo_nodo->mes_ult_vac
Mientras que (nuevo_nodo->mes_ult_vac mayor que 6 o nuevo_nodo-
>mes_ult_vac menor que 1)hacer
Escribir<<" "
Escribir("Mes no v%clido. Ingrese de nuevo: ",160)
leer>>nuevo_nodo->mes_ult_vac

Si((6 - nuevo_nodo->mes_ult_vac)mayor igual que 5)


nuevo_nodo->alerta = 1
Escribir("Deber%ca vacunarse su dosis de refuerzo, ha pasado
tiempo desde su %cltima vacuna",161,163)

system("pause")

si_no
system("pause")
strcpy(nuevo_nodo->vacuna,"NO VACUNADO")
nuevo_nodo->num_dosis = 0

nuevo_nodo->num_orden = i

nodo *aux1 = lista

lista = nuevo_nodo
nuevo_nodo->siguiente = aux1
3.2. Explicación de la implementación y pruebas
El equipo investigador debe explicar las principales funciones que componen el algoritmo
implementado en el lenguaje de su preferencia; además debe indicar qué datos ha usado.

3.2.1. Explicación para escenario 1:


Los datos para probar la implementación son:

Usuario Nº2:
Usuario Nº1:
Nombre: ALVARO
Nombre: BENJAMIN
Apellido: CASTILLO
Apellido: CASTRO CAMPOS
MENDOZA
Edad: 21
Edad: 28
Dirección: COLLANTES 704
Dirección: QUINTANAS 485
DNI: 74902747
DNI: 17854234
Vacuna: PFIZER
Vacuna: AZTRAZENECA
Nºdosis: 3 DOSIS
Dosis: 3 DOSIS
Año: 2022
Año: 2022
Mes: 02
Mes: 04

- En este escenario demostramos que la información ingresada fue válida y así mismos
comprobamos que los 2 usuarios colocados están vacunados, finalmente obtenemos un
resultado de 100% en personas vacunadas con 3 dosis.
3.2.2. Explicación para escenario 2

Usuario Nº1:
Nombre: BENJAMIN Usuario Nº2:
Apellido: CASTRO CAMPOS Nombre: JOSE ALBERTO
Edad: 21 Apellido: CHACON REYES
Dirección: COLLANTES 704 Edad: 28
DNI: 74902747 Dirección: JUAN PABLO II 347
DNI: 79417423
Vacuna: PFIZER
Nºdosis: 3 DOSIS
Año: 2022
Mes: 02

- En este escenario podemos observar el resultado de 1 persona vacunada y otra persona no


vacunada lo cual el porcentaje varía.

3.2.3. Explicación para escenario 3

Usuario Nº1: Usuario Nº2:


Nombre: BENJAMIN Nombre: JOSE ALBERTO
Apellido: CASTRO CAMPOS Apellido: CHACON REYES
Edad: 21 Edad: 28
Dirección: COLLANTES 704 Dirección: JUAN PABLO II 347
DNI: 74902747 DNI: 79417423

Vacuna: PFIZER Vacuna: ASTRAZENECA


Nºdosis: 2 DOSIS Nºdosis: 3 DOSIS
Año: 2021 Año: 2021
Mes: 11 Mes:12
- En este escenario podemos observar cómo nos manda un aviso cuando el usuario necesita su
dosis de refuerzo cuando ya han pasado más de 5 meses.

- Aquí podemos ver el resultado de las personas vacunadas con 2 o 3 dosis


Capítulo 4

Resultados y discusión de la monografía


4.1. Análisis de resultados

• En los escenarios descritos podemos ver como el ingreso de datos nos permite llevar una
contabilidad exacta y así mismo hacer hincapié en el tercer escenario donde podemos
observar que al usuario que lleva más de 5 meses sin vacunarse es avisado atrás de un
mensaje donde le indica que es tiempo de una dosis de refuerzo.

4.2. Conclusiones

• En conclusión, nuestra base de datos realizada con Algoritmos, utilizando el programa C++,
nos arrojó resultados positivos, dándonos a conocer los porcentajes de personas vacunadas y
no vacunadas, por otro lado, pudimos establecer una función que sería muy útil para todos los
ciudadanos, ya que, al haber pasado los 5 meses de su primera o segunda vacuna, funcionaría
como una alarma para llevar el control, de la fecha indicada que le toca la siguiente
vacunación (refuerzo).
Referencias bibliográficas
• Lara Muñoz, E. M. (2013). Fundamentos de investigación: Un enfoque por competencias,
2da. edición. Alfaomega, México. MMA (2011). Plano Nacional de Resíduos Sólidos
(PNRS). Ministério do Meio Ambiente. Rojas Soriano, R. (2001). Guía para realizar
investigaciones sociales, 26a. edición. Plaza Valdez, México. Talbi, E.-G. (2009).
Metaheuristics: From design to implementation. John Wiley and Sons, France.

También podría gustarte