-1
Good afternoon, I’m trying to make a program to estimate the contagion from some parameters, but the program is not working properly, it does not create file, and has not printed any of the prints I put in to verify where the error was. I think the reason is because I’m using very large numbers like MAX and MAXC, however I don’t have much familiarity with malloc and I don’t even know how to solve this problem, whether with malloc or otherwise, someone could help me?
Follow the code:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
#define MAX 210000000
#define MAXC 1000000
main (){
float matriz[MAX][15];
float contagio[500];
int aux;
float pb1, pb2, pb3;
int cont=0;
int gravidade;
int i,j,k,w,z,a,b,c,d,e,f,g;
int mortos;
int infec;
int curados;
int leitos;
int tempo[500][4];
FILE *pont_arq;
FILE *pont_arq_tempo;
srand(time(NULL));
for (i=0;i<MAX;i++){ // set padrao
matriz[i][1]=i+1;
matriz[i][2]=1;
matriz[i][3]=0;
matriz[i][11]=0;
}
while(cont<50000){ // set hospitalar
aux = rand() % MAX;
matriz[aux][3]=1;
cont++;}
for (i=0;i<500;i++)// set contagio--------------------------------------
contagio[i]=0;
contagio[0]=47.61904762;
contagio[1]=95.23809524;
contagio[2]=142.8571429;
contagio[3]=285.7142857;
contagio[4]=285.7142857;
contagio[5]=333.3333333;
contagio[6]=333.3333333;
contagio[7]=2190.47619;
contagio[8]=3190.47619;
contagio[9]=2238.095238;
contagio[10]=10952.38095;
contagio[11]=11095.2381;
contagio[12]=15571.42857;
contagio[13]=26952.38095;
contagio[14]=50333.33333;
contagio[15]=129523.8095;
contagio[16]=282523.8095;
contagio[17]=147809.5238;
contagio[18]=481714.2857;
contagio[19]=419047.619;
contagio[20]=1305714.286;
contagio[21]=1897476.19;
contagio[22]=1885238.095;
contagio[23]=3353952.381;
contagio[24]=5086380.952;
contagio[25]=3388095.238;
contagio[26]=3999190.476;
contagio[27]=6567619.048;
contagio[28]=5130000;
contagio[29]=4562523.81;
contagio[30]=13347619.05;
contagio[31]=11333047.62;
contagio[32]=14799809.52;
contagio[33]=12812857.14;
contagio[34]=10406666.67;
contagio[35]=19323190.48;
contagio[36]=26148904.76;
contagio[37]=32374904.76;
contagio[38]=34865380.95;
contagio[39]=40344142.86;
contagio[40]=48064428.57;
contagio[41]=46072095.24;
contagio[42]=39846000;
contagio[43]=41714000;
contagio[44]=32997428.57;
contagio[45]=37355714.29;
contagio[46]=30357809.52;
contagio[47]=25053333.33;
contagio[48]=76093476.19;
contagio[49]=37924238.1;
contagio[50]=33499809.52;
contagio[51]=35174714.29;
contagio[52]=29546809.52;
contagio[53]=26114523.81;
contagio[54]=68807809.52;
contagio[55]=35823285.71;
contagio[56]=27036476.19;
contagio[57]=27712380.95;
contagio[58]=25549428.57;
contagio[59]=23792095.24;
contagio[60]=5082857.143;
contagio[61]=12017714.29;
contagio[62]=11152523.81;
contagio[63]=8786857.143;
contagio[64]=2838809.524;
contagio[65]=6894333.333;
contagio[66]=5461333.333;
contagio[67]=5893952.381;
contagio[68]=4461000;
contagio[69]=5812857.143;
contagio[70]=7705380.952;
contagio[71]=2568476.19;
contagio[72]=2433285.714;
contagio[73]=946285.7143;
contagio[74]=1892523.81;
contagio[75]=1933142.857;
contagio[76]=1324761.905;
contagio[77]=662380.9524;
contagio[78]=540761.9048;
contagio[79]=202761.9048;
contagio[80]=337952.381;
contagio[81]=270380.9524;
contagio[82]=202761.9048;
contagio[83]=135190.4762;
contagio[84]=270333.3333;
contagio[85]=202809.5238;
contagio[86]=378476.1905;
contagio[87]=162238.0952;
contagio[88]=378523.8095;
contagio[89]=130142.8571;
contagio[90]=212285.7143;
contagio[91]=60714.28571;
contagio[92]=60380.95238;
contagio[93]=38809.52381;
contagio[94]=16238.09524;
contagio[95]=21238.09524;
contagio[96]=10333.33333;
contagio[97]=7761.904762;
contagio[98]=5809.52381;
contagio[99]=4619.047619;
contagio[100]=3904.761905;
contagio[101]=3285.714286;
contagio[102]=1666.666667;
contagio[103]=1047.619048;
contagio[104]=761.9047619;
contagio[105]=666.6666667;
contagio[106]=380.952381;
contagio[107]=142.8571429;
contagio[108]=0;
contagio[109]=47.61904762;
contagio[110]=0;
contagio[111]=0;
contagio[112]=0;
contagio[113]=0;
contagio[114]=0;
contagio[115]=0;
contagio[116]=0;
contagio[117]=0;
contagio[118]=0;
contagio[119]=0;
contagio[120]=0;
contagio[121]=0;
contagio[122]=0;
contagio[123]=0;
contagio[124]=0;
contagio[125]=0;
contagio[126]=0;
contagio[127]=0;
contagio[128]=0;
contagio[129]=0;
contagio[130]=0;
contagio[131]=0;
//------------------------------------------------------
cont=0;
while(cont<=5){ // primeiros vetores
aux = rand() % MAX;
matriz[aux][2]=3;
cont++;}
for (i=0;i<MAX;i++){ // set idade
if(i<4620000)
{matriz[i][4]=90;
}else if(i>=4620000&&i<13965000)
{matriz[i][4]=80;
}else if(i>=13965000&&i<32025000)
{matriz[i][4]=70;
}else if(i>=32025000&&i<57435000)
{matriz[i][4]=60;
}else if(i>=57435000&&i<86625000)
{matriz[i][4]=50;
}else if(i>=86625000&&i<119910000)
{matriz[i][4]=40;
}else if(i>=119910000&&i<151200000)
{matriz[i][4]=30;
}else if(i>=151200000&&i<182700000)
{matriz[i][4]=20;
}else if(i>=182700000&&i<210000000)
{matriz[i][4]=10;}
}
for (i=0;i<MAX;i++){ // set problemas cardiovasculares
aux = rand() % 100;
if(matriz[i][4]>=40&&aux<31)
matriz[i][6]=1;
else
matriz[i][6]=0;
}
for (i=0;i<MAX;i++){ // set problemas diabetes
matriz[i][7]=0;
aux = rand() % 100;
if(matriz[i][4]>=18&&matriz[i][4]<30&&aux<2)
matriz[i][7]=1;
if(matriz[i][4]>=30&&matriz[i][4]<60&&aux<6)
matriz[i][7]=1;
if(matriz[i][4]>=60&&matriz[i][4]<65&&aux<15)
matriz[i][7]=1;
if(matriz[i][4]>=65&&matriz[i][4]<75&&aux<20)
matriz[i][7]=1;
if(matriz[i][4]>=75&&aux<20)
matriz[i][7]=1;
}
for (i=0;i<MAX;i++){ // set problemas hipertencao
matriz[i][8]=0;
aux = rand() % 100;
if(aux<31)
matriz[i][8]=1;
}
for (i=0;i<MAX;i++){ // set problemas cancer
matriz[i][9]=0;
aux = rand() % 1000;
if(aux<4)
matriz[i][9]=1;
}
for (i=0;i<MAX;i++){ // set problemas respiratorios
matriz[i][10]=0;
aux = rand() % 100;
if(aux<21)
matriz[i][10]=1;
}
cont=0;
for(i=0;i<MAX;i++){ // set numero leitos
if(matriz[i][3]=1)
cont++;
}
leitos=cont;
for(i=0;i<MAX;i++){ //set numero de patologias
matriz[i][0]=matriz[i][6]+matriz[i][7]+matriz[i][8]+matriz[i][9]+matriz[i][10];
}
for(i=0;i<MAX;i++){ //set probabilidade de morte
if(matriz[i][4]>0)pb1=0;
if(matriz[i][4]>10)pb1=0.002;
if(matriz[i][4]>20)pb1=0.002;
if(matriz[i][4]>30)pb1=0.002;
if(matriz[i][4]>40)pb1=0.004;
if(matriz[i][4]>50)pb1=0.013;
if(matriz[i][4]>60)pb1=0.036;
if(matriz[i][4]>70)pb1=0.080;
if(matriz[i][4]>80)pb1=0.148;
pb2=(0.105+matriz[i][6])*(0.073+matriz[i][7])*(0.06+matriz[i][8])*(0.056+matriz[i][9])*(0.063+matriz[i][10])-1;
if(pb2=0)pb2=0.009;
if(matriz[i][0]=2)pb3=0.259;
if(matriz[i][0]=3)pb3=0.507;
matriz[i][5]= (1+pb1)*(1+pb2)*(1+pb3)-1; // idade + doencas + n patologias
matriz[i][5]=matriz[i][5]*100; // deixando em porcentagem (%)
}
aux=0;
cont=0;
for(a=0;a<500;a++){ // Ciclo de tempo
infec=0;
mortos=0;
curados=0;
for(i=0;i<MAX;i++){
aux = rand() % MAXC;
if(aux<contagio[a])
matriz[i][2]=3;
if(matriz[i][2]==3){
aux = rand() % 100;
if(aux<=matriz[i][5])
matriz[i][2]=0;
}
b=a-20;
if(a>20&&matriz[i][a]==3)
if(matriz[i][b]==3)
matriz[i][2]=2;
}
aux=0;
cont=0;
tempo[a][0]=a;
for (i=0;i<MAX;i++){// dia , infectados, mortos , curados;
if (matriz[i][2]==0)
mortos++;
if (matriz[i][2]==3)
infec++;
if (matriz[i][2]==2)
curados++;
}
tempo[a][1]=infec;
tempo[a][2]=mortos;
tempo[a][3]=curados;
}
pont_arq_tempo = fopen("tempo.txt", "a");
for (i=0;i<=500;i++){
for (j=0;j<=4;j++){
fprintf(tempo[i][j],"\n");}}
fclose(pont_arq_tempo);
printf("Sucesso!");
system("pause");
}
Thank you.
Here:
if(matriz[i][3]=1)
shouldn’t be:if (matriz[i][3] == 1)
? Ditto:if(pb2=0)pb2=0.009;
,if(matriz[i][0]=2)pb3=0.259;
andif(matriz[i][0]=3)pb3=0.507;
.– anonimo
arranged the if, but the problem persists
– Luis Fernando Garcia
Here:
fprintf(tempo[i][j],"\n");
shouldn’t be:for (i=0;i<500;i++){ for (j=0;j<4;j++){ fprintf(pont_arq_tempo, "%d\n", tempo[i][j]);
?– anonimo