Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bcs_ptx

oque tem de errado nesse código?

Recommended Posts

Fala raça, estou começando agora com c, oque tem de errado nesse código? ele conta enquanto a população A for menor que B, depois que a a ultrapassar a b ele mostra o numero de anos que foi necessário para alcançar a outra.

 

valeu

 

main(){

   int total_a = 90;
   int total_b = 200;
   int ano = 0;

   while(total_a < total_B){

       total_a = total_a * 0.3;
       total_b = total_b * 0.1;
       ano = ano + 1;

   }

   printf("%d %d %d", total_a, total_b, ano);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dicas de boa prática:

 

NUNCA omita o 'int' de uma função, use:

 

int main()

 

E coloque o 'return 0;'. Melhor ainda, use:

 

int main(void)

 

------------------------

 

Prefira:

 

int var = 2;
var += 15;

 

Ao invés de:

 

int var = 2;
var = var + 15;

 

Além de ser mais fácil de ler, gera código mais otimizado (pelo o menos em compiladores mais antigos, talvez em compiladores modernos também).

 

A mesma coisa serve pra *, /, -, %, etc.

 

------------------------

 

Prefira:

 

int var = 2;
++var;

 

Ao invés de:

 

int var = 2;
var += 1;

 

Além de ser mais fácil de ler, gera código mais otimizado (pelo o menos em compiladores mais antigos, talvez em compiladores modernos também).

 

------------------------

 

Agora, você não pode fazer multiplicação com números decimais usando 'int', afinal, int significa intenger, ou inteiro, em português. Você tem que usar o tipo 'double' para isso (ou float, mas double é mais usado).

 

Lembre-se também que C é uma lang case sensitive. Então, total_b é diferente de Total_b, que é diferente de TOTAL_B, que é diferente de tOtAl_B, que é diferente de total_B. Cada um desses que citei é uma variável diferente.

 

Outra coisa, está faltando o #include para o printf(), que é o <stdio.h>.

 

-------------------------

 

No final, ficaria isso:

 

#include <stdio.h>

int main(void) {

   double total_a = 90.0;
   double total_b = 200.0;
   int ano = 0;

   while( total_a < total_b ) {

       total_a *= 0.3;
       total_b *= 0.1;
       ++ano;

   }

   printf("%f %f %d", total_a, total_b, ano);

   return 0;
}

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

blza cara, mas isso me retorna 27.000000 e 20.000000 e 1, na real era para mostrar quantos anos levou para o a ultrapassar o b e qual o valor de a e b no final.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu te dei dicas sobre como corrigir o seu programa nos erros do código. Se a resposta não é '1' (1 ano), então tem algum erro de lógica no seu programa.

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo seu código não tem erro nenhum, os valores de saída estão certos faça o Chinês do seu código:

a variável Total_a é menor que total_b isso satisfaz a expressão lógica certo? então ele entra no laço e faz as operações:

total_a *= 0.3;
total_b *= 0.1;
ano++;

feito isso total_a passa a valer 27 que é igual a 90 (valor inicial da variável) multiplicado por 0.3; a variavel total_b passa a valer 20 que é 200 (valor inicial da variável) multiplicado por 0.1, depois ele acrescenta 1 à variável ano e faz o teste novamente, verifica que total_a agora tem valor igual a 27 e total_b tem valor igual a 20 portanto a expressão total_a < total_b e falsa e não entra novamente no loop impreime os dados 27 e 20 e 1 pois passou apenas uma vez no loop; Espero ter sido claro e poder ter ajudado, qualquer duvida poste ai; Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.