Ir ao conteúdo
  • Cadastre-se

Dúvida em repetição


paulo_107

Posts recomendados

Olá galera, beleza? Sou iniciante em programação e estou tentando fazer um programa de 'sobrevivência de uma população'. Em resumo é assim: Eu tenho uma matriz 6x11 onde em uma única posição eu tenho N recursos e N população. Essa população consome recursos de tal regra e cresce de acordo em tal regra ( ambas eu já fiz e estão funcionando ). Esses recursos são classificados de abundantes até críticos. A população consome recursos até entrar no caso crítico e migrar de posição pois os recusos criticos não são mais suficientes pra sobrevivência dessa população ( aqui está minha dúvida ) . Tentei fazer um do{}while(condição) e um for mas não consegui.

 

Em resumo é: enquanto os recursos forem maiores que críticos ele consome até entrar no if de recursos críticos. Vou colar o código aqui. Se alguém puder tirar minha dúvida eu agradeço.

 

Declarei comeu como um int ( só existem valores int nesse código ) e fiz uma função de consumo de recursos na posição da matriz . O código funciona uma passada ( por não estar em uma repetição ). Dai quando eu faço um do{}while( comeu >111); o programa roda infinitamente. Eu sei que para o computador qualquer valor diferente de 0 é infinito mas não consegui nenhuma maneira pra corrigir esse problema.

 

int comeu;
    
        comeu = consome_recursos(MapaGeo[rlinha][rcoluna]);         /* chamada função para consumir recursos, novo recurso */
        printf("\nRecursos primeira passada: %d", comeu );
 
        if (MapaGeo[rlinha][rcoluna].recursos>=333 && MapaGeo[rlinha][rcoluna].recursos<=999)       /* crescimento população caso recursos abundantes */
        {
            populacaoAux = popu_cresce_abundantes(populacaoAux);
            printf("\nPopulacao primeira passada: %d\n", populacaoAux);
        }
        else if (MapaGeo[rlinha][rcoluna].recursos<=332 && MapaGeo[rlinha][rcoluna].recursos>=111)      /* crescimento população caso recursos adequados */
        {
            populacaoAux = popu_cresce_adequados(populacaoAux);
            printf("\nPopulacao primeira passada: %d\n", populacaoAux);
        }
        else if (MapaGeo[rlinha][rcoluna].recursos<=110 && MapaGeo[rlinha][rcoluna].recursos>=50)     /* crescimento população caso recursos estáveis */
        {
            populacaoAux = popu_cresce_criticos(populacaoAux);
            printf("\nPopulacao primeira passada: %d\n", populacaoAux);
        }
        else if (MapaGeo[rlinha][rcoluna].recursos<=50 && MapaGeo[rlinha][rcoluna].recursos>=1)     /* crescimento população caso recursos estáveis */
        {
            populacaoAux = popu_cresce_escassos(populacaoAux); /* Aqui a população cresce com recursos escassos e migra*/
            printf("\nPopulacao primeira passada: %d\n", populacaoAux);
            migrar_popu (MapaGeo,  rlinha, rcoluna);
        }
return 0;
Link para o comentário
Compartilhar em outros sites

Olá tudo bem?!

 

referente ao laço while, que você disse que esta rodando infinitamente, o certo não seria:

while(comeu < 111) {/// resto do código.comeu++;}

você não esta esquecendo de incrementar ao final das instruções? Outro possível problema quando declarar o comeu declare ele iniciando em zero, pois caso não o faça ele pode começar com "lixo" ( lixo é um número qualquer).

Att

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!