Informática, perguntado por lucasjean92, 1 ano atrás

Alguém pode me explicar porque a saída desse programa é 5 e 7 não estou entendendo a lógica, obrigado!

int i=0,a,b;
a=0;
b=1;
while(i<4){
if(i<=2){
a=a+2;
}else{
a=a-1;
b=b+a+1;
}
i=i+1;
}
printf("%d %d",a,b);

Soluções para a tarefa

Respondido por IceDaemon
0

Na primeira vez que o programa entra na estrutura de repetição (while) a condiçao eh verdadeira e o programa cai no if (que tambem eh verdadeiro), entao o programa realiza a = a + 2 (ou 0 = 0 + 2), nisso a variavel a passa a ter o valor 2. O codigo incrementa 1 a variavel i (que passa a ser 1), nisso a mesma coisa acontece mais 2x, ja que o if ainda eh verdade (a = a + 2 ou 2 = 2 + 2 e depois 4 = 4 + 2, com a variavel a passando a ter 6. Nesse ponto, o i ja possui valor 3, e como esta dentro da condiçao de repetiçao, o laço vai mais uma vez... soh que nesse caso, o if nao eh verdade e entao cai no else, que executa (a = a -1, ou 6 = 6 -1) tendo a = 5 e depois b = b+a+1 (1 = 1 + 5 + 1) tendo b =7

A variavel i recebe falor 4 e como isso n satisfaz mais a condiçao do laço, o programa se encerra


lucasjean92: excelente explicação entendi perfeitamente e me ajudou bastante, obrigado!
lucasjean92: int vet[5], i,a,b;
a=0;
b=0;
i=0;
while(i<5){ saída do programa = 0 2 7 25 105
vet[i]=a;
a=a+1;
b=b+1;
a=a*b+1;
i=i+1;
}
for(i=0; i<5;i++)
printf("\t%d", vet[i]);
lucasjean92: consegue me explicar essa logica porque o vetor vai ser 0,2,7,25,105?
Perguntas interessantes