# Modelo epidemiológicos / Epidemic model
Projeto final da disciplina de Introdução as técnicas de programação.
/
Final project of the discipline Introduction to Programming Techniques.
### Propósito / Purpose
São utilizados para a compreensão da dinâmica de uma epidemia ou afim, e são,portanto,ferramentas essenciais na determinação de políticas públicas para combate e prevenção de doenças
- [x]
/
They are used to understand the dynamics of an epidemic or the like, and are therefore essential tools in determining public policies for combating and preventing diseases
### Modo de Uso / Way of using
Primeiro de tudo, devemos compilar os arquivos que serão utilizados, para isso rode no terminal o comando.
/
First of all, we must compile the files that will be used, for that run the command in the terminal.
``
gcc main.c -o epidemic
``
O próximo passo é executar o binário fruto da compilação.
/
The next step is to run the compilation binary.
``
./epidemic
``
## Struct
``
typedef struct
{
double S, I, R, tempo, b, h, k;
} Dado;
``
## Alocação
Em cima dos números de dias será alocado o tamanho
``
Dado* criarDado(double tempo)
{
Dado* dado = malloc(sizeof(Dado));
dado->tempo = tempo;
return dado;
}
``
## Functions
### Facilidade de contágio
Inputs:
output:
``
double facilidadeDeContagio(int N_b, int T_b, int S_b, int I_b)
{
return (N_b / ((double)(T_b * S_b * I_b)));
}
``
### Probabilidade de cura
``
double probabilidadeDeCura(int m_k, int n_k, int T_k)
{
return (m_k / ((double)(n_k * T_k)));
}
``
### Calculo de Suceptível
``
double calcSuscetivel(Dado* d)
{
double oldS, oldI;
oldS = d->S;
oldI = d->I;
return (oldS - (d->h * d->b * oldS * oldI));
}
``
### Infectado
``
double calcInfectado(Dado* d)
{
double oldS, oldI;
oldS = d->S;
oldI = d->I;
return (oldI + (d->h * ((d->b * oldS * oldI) - (d->k * oldI))));
}
``
## Crescimento
temos uma função onde aproveita os dados que vai crescendo
``
void calcDado(Dado* d)
{
Dado* novoDado = criarDado(d->tempo + d->h);
novoDado->S = calcSuscetivel(d);
novoDado->I = calcInfectado(d);
novoDado->R = calcRemovido(d);
d->S = novoDado->S;
d->I = novoDado->I;
d->R = novoDado->R;
d->tempo = novoDado->tempo;
}
``