Loop problem for

2

I have a problem and I can not identify it in my code, I have a for 60 iterations, and it is falling on if's when I identify it (i in this case) is divisible by 5 or by 3 only in the first iteration , when i is 0. After this it passes the others until the end without stopping in the if's.

int main(){

int i,j,opcao,qtd_taxi,qtd_passageiro,tamFilaTaxi=0,tamFilaPassageiro=0;
char id_a_inserir[3];

Fila* taxis = criar_fila();
Fila* passageiros = criar_fila();

for(i=0;i<60;i++){
    printf("-- Minuto %d -- \n",i);
    if(i%5==0){
        while(qtd_taxi<0 || qtd_taxi>5){
            printf("Digite a quantidade de carros: \n");
            scanf("%d",&qtd_taxi);
            fflush(stdin);
            if(qtd_taxi>=0 && qtd_taxi<=5){
                for(j=0;j<qtd_taxi;j++){
                    tamFilaTaxi ++;
                    sprintf(id_a_inserir, "t%d", tamFilaTaxi);
                    inserir(taxis,id_a_inserir);
                }
            }else printf(" *Quantidade invalida! \n \n");
        }
        qtd_taxi=0;
    }
    if(i%3==0){
        while(qtd_passageiro<0 || qtd_passageiro>3){
            printf("Digite a quantidade de passageiros: \n");
            scanf("%d",&qtd_passageiro);
            fflush(stdin);
            if(qtd_passageiro>=0 && qtd_passageiro<=3){
                for(j=0;j<qtd_passageiro;j++){
                    tamFilaPassageiro ++;
                    sprintf(id_a_inserir, "p%d", tamFilaPassageiro);
                    inserir(passageiros,id_a_inserir);
                }
            }else printf(" *Quantidade invalida! \n \n");
        }
        qtd_passageiro=0;
    }
}
    
asked by anonymous 30.06.2015 / 00:55

1 answer

3

As I explained in the comments, the first time is always going to come in and then you are assigning 0 to the variable you use in the control of while so it will always give false and will never enter. To force at least one entry you can use do ... while

for(i=0;i<60;i++){
    printf("-- Minuto %d -- \n",i);
    if(i%5==0){
        do {
            printf("Digite a quantidade de carros: \n");
            scanf("%d",&qtd_taxi);
            // ... restante
        } while(qtd_taxi<0 || qtd_taxi>5);
        qtd_taxi=0;
    }
    if(i%3==0){
        do {
            printf("Digite a quantidade de passageiros: \n");
            scanf("%d",&qtd_passageiro);
            // restante do código
        } while(qtd_passageiro<0 || qtd_passageiro>3);
        qtd_passageiro=0;
    }
}
    
30.06.2015 / 01:22