Fiz um programa em linguagem em C, da seguinte pergunta:
"1) Faça um programa que escreva a música dos Patinho da Xuxa utilizando laço de repetição... 5 patinhos foram passear além das montanhas para brincar A mamãe gritou Quack quack quack mas só 4 patinhos Voltaram de lá 4 patinhos foram passear além das montanhas para brincar A mamãe gritou Quack quack quack mas só 3 patinhos Voltaram de lá 3 patinhos foram passear além das montanhas para brincar A mamãe gritou Quack quack quack mas só 2 patinhos Voltaram de lá 2 patinhos foram passear além das montanhas para brincar A mamãe gritou Quack quack quack mas só 1 patinhos Voltaram de lá 1 patinhos foram passear além das montanhas para brincar A mamãe gritou Quack quack quack mas 0 patinhos Voltaram de lá"
Porem ficou em loop infinito voces sabem o que fiz errado?
Meu programa:
#include
#include
int main()
{
int cont,voltaram;
for(cont=5,voltaram=4;cont<=5;cont=0){
voltaram-=cont;
printf("%i, patinhos foram passear além das montanhas para brincar.\n A mamãe gritou Quack quack quack mas só %i, patinhos Voltaram de lá",cont,voltaram);
}
return 0;
}
Soluções para a tarefa
Respondido por
1
O problema é um erro de lógica no loop for, é o seguinte:
for(cont=5,voltaram=4;cont<=5;cont=0)
Você faz a parte de inicialização corretamente(cont = 5), mas na parte de condição(cont <= 5), o programa vai verificar se cont é menor ou igual a 5, no caso sim, é igual, então é executado a primeira vez o corpo(os comandos dentro do loop). Depois da primeira execução do loop, o programa vai para a parte de passo(cont = 0), no caso, cont passa valer 0, depois ele volta para a parte de condição(cont <= 5) e novamente verifica se cont <= 5, no caso sim, pois cont agora vale zero, e zero é < 5, então é executado o corpo novamente, e depois o passo... Repara, você não dá nenhum tipo de condição para o loop ser finalizado, porque cont sempre vai ser zero e zero é sempre menor que 5, então a condição sempre vai ser verdadeira tornando o loop infinito. Agora, examine meu código(dê enfase ao loop):
(...)
voltaram = 4;
for(cont=5;cont>=1;cont--){
printf("\n%i, patinhos foram passear além das montanhas para brincar.\n A mamãe gritou Quack quack quack mas só %i, patinhos Voltaram de lá\n",cont,voltaram);
voltaram--;
}
Eu inicio cont com 5, depois verifico se cont >= 1, no caso sim, é maior, e então é executado o loop, depois na parte de passo(cont--) eu retiro um valor de cont, então cont agora passa valer 4, ai o loop vai acontecendo até o valor de cont passar a ser 0, porque quando for verificar se cont >= 1, vai ser uma condição falsa pois zero não é maior nem igual a 1, então o loop se encerra.
for(cont=5,voltaram=4;cont<=5;cont=0)
Você faz a parte de inicialização corretamente(cont = 5), mas na parte de condição(cont <= 5), o programa vai verificar se cont é menor ou igual a 5, no caso sim, é igual, então é executado a primeira vez o corpo(os comandos dentro do loop). Depois da primeira execução do loop, o programa vai para a parte de passo(cont = 0), no caso, cont passa valer 0, depois ele volta para a parte de condição(cont <= 5) e novamente verifica se cont <= 5, no caso sim, pois cont agora vale zero, e zero é < 5, então é executado o corpo novamente, e depois o passo... Repara, você não dá nenhum tipo de condição para o loop ser finalizado, porque cont sempre vai ser zero e zero é sempre menor que 5, então a condição sempre vai ser verdadeira tornando o loop infinito. Agora, examine meu código(dê enfase ao loop):
(...)
voltaram = 4;
for(cont=5;cont>=1;cont--){
printf("\n%i, patinhos foram passear além das montanhas para brincar.\n A mamãe gritou Quack quack quack mas só %i, patinhos Voltaram de lá\n",cont,voltaram);
voltaram--;
}
Eu inicio cont com 5, depois verifico se cont >= 1, no caso sim, é maior, e então é executado o loop, depois na parte de passo(cont--) eu retiro um valor de cont, então cont agora passa valer 4, ai o loop vai acontecendo até o valor de cont passar a ser 0, porque quando for verificar se cont >= 1, vai ser uma condição falsa pois zero não é maior nem igual a 1, então o loop se encerra.
Jujubay:
Certo esta parte eu entendi, agora como eu respondo a quantidade de patinhos que vai voltar?
Respondido por
0
Resposta:
Nao ta certo
Explicação:
eia
Perguntas interessantes