cami-la / loops-e-arrays

Repositório do curso Estruturas de Repetição e Arrays com Java. Curso este oferecido pela Digital Innovation one e ministrado por mim.
https://web.digitalinnovation.one/home
1.39k stars 351 forks source link

Exercício 04 - Habitantes da cidade A e B #15

Open Marci8622 opened 2 years ago

Marci8622 commented 2 years ago

Boa noite!

Quando conferido pelo excel, identifiquei que foram necessários 63 anos para A ultrapassar B, porém no meu código calculou 62 anos. Acredito que faltou alguma informação. Fiz várias tentativas para continuar o loop para somar mais um ano, porém não consegui identificar como.

/* Supondo que a população de um país A seja da ordem de 80000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200000 habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.

*/

import org.w3c.dom.ls.LSOutput;

    public class Ex04_Populacao {
        public static void main(String[] args) {

    /* Onde:
       -habA: Habitantes cidade A;
       -habB: Habitantes cidade B;
       -txA: Taxa de crescimento cidade A;
       -txB: Taxa de crescimento cidade B;
     */
            int habA = 80000;
            int habB = 200000;
            double txA = 0.03;
            double txB = 0.015;
            int ano = 0;

            do {
                System.out.println("Quantidade de habitantes da cidade A: " + habA);
                System.out.println("Quantidade de habitantes da cidade B: " + habB);

                habA *= (1 + txA);
                habB *= (1 + txB);
                ano++;

            }while (habA * (1 + txA) <= habB * (1 + txB));
            System.out.println("Para a cidade A se igualar, ou ter mais habitantes do que a cidade B, serão necessários: " + ano + " anos ");

        }

}

cami-la commented 2 years ago

Oi Marci, tudo bem? Desculpa a demnora do retorno, minhas semanas estão bastante corridas!

Olh,a refiz o desafio da seguinte forma:

public class Main {
  public static void main(String[] args) {
    int habA = 80000;
    int habB = 200000;
    double txA = 0.03;
    double txB = 0.015;
    int qtdAno = 0;

    System.out.println("Quantidade de habitantes da cidade A: " + habA);
    System.out.println("Quantidade de habitantes da cidade B: " + habB);
    while(!(habA >= habB)) { //Enquanto o habA NÃO É maior ou igual a habB, execute o laço.
      habA *= (1 + txA);
      habB *= (1 + txB);
      qtdAno++;
    }
    System.out.println("Para a cidade A se igualar, ou ter mais habitantes do que a cidade B, serão necessários: " + qtdAno + " anos ");
  }
}

No caso, quando você usou o laço de repetição do-while, o ano deveria começar com 1. Sempre que possível, tenta usar o laço while ou o for. Às vezes o do-while tem umas coisinhas que precisamos ajustar e eu particularmente uso pouco.

Marci8622 commented 2 years ago

Realmente, foram algumas coisas desnecessárias: Não precisava chamar o scan, devido ter todas as informações já necessárias para o programa realizar o cálculo. Com o while ficou controlado os anos, pois no meu ficou um ano a menos. Tinha tentado pelo while, mas acredito que pequei não colocando conforme sua condição, tinha colocado (habA <= habB). Com essa sua ordem, o while permanece enquanto A é diferente de maior ou igual a B. Obrigada mais uma vez! Mesmo assim fiquei muito satisfeita com o que consegui fazer. Você é show!!

cami-la commented 2 years ago

Eu quem estou muito satisfeita com o que você conseguiu fazer. (: Parabéns, você está evoluíndo rápido!

Disponha!! <3