Ir ao conteúdo
  • Cadastre-se
paulo_107

Dúvida em repetição

Recommended Posts

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;

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum... vou tentar. Eu tinha iniciado como 0 mas tirei. As funções todas funcionam, já fiz um teste separado, o caso mesmo é só rodar esse programa enquanto o comeu >111, ai ele entra no if do comeu < = 111.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continua dando errado =/

Ambos os três tipos de repetições, for, do while, while{ incremento} continuam repetindo infinitamente .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×