iae Galera,
estou com um exercicio da facul! ja fiz e esta pronto! rodando na gambiara
mais acho q da para melhorar, mais nao consegui colocar em 2 laços de repetição para ficar padronizado
alguém pode me ajudar ?
o Enunciado é o seguinte:
Escreva um programa para ler vários números até que a soma dos numeros lidos seja maior que 50. considere que não é permitida a entrada de mais de 50 números.
seu algoritmo deve parar quando uma dessas condições for atingida. A saida do programa deve ser a quantidade de números lidos e a palavra “SIM” somente quando a soma dos números for maior que 50 e “Não” caso contrário.
[code]#include <stdio.h>
int main ()
{ int i,soma, aux, vet[50];
i=0;
soma=0;
aux=1;
while (aux<50)
{ if (i<50)
{ printf(“Digite um Número: “);
scanf (”%d”,& vet[i]);
soma=soma+vet[i];
aux=soma;
i=i+1;
}
else
aux =aux +50;
}
printf(" Quantidade de numeros lidos : %d\n", i);
if (soma >= 50)
printf(“Sim\n”);
else
{ printf(“NÃo\n”);
}
Oi Michell.
Ao que eu vi, somente falta um || (ou) no seu while para satisfazer o problema. Você utiliza a variavél ‘i’ para contar cada número de entrada, pois então, com ele tu sabe se o usuário já digitou os 50 números, portanto:
Certo?
Enquanto a variavél ‘aux’ for menor ou igual a 50 OU a variavél ‘i’ for menor ou igual a 50, permanece em loop.
Se a soma atingir 50, ele encerra o loop OU se o usuário digitar 50 números, também encerra. Eu coloquei menor ou igual a 50 pois entendo que seja a partir de 51, que ele deve encerrar o loop. Supri sua necessidade ?
[quote=Michell Scherer]iae Galera,
estou com um exercicio da facul! ja fiz e esta pronto! rodando na gambiara
mais acho q da para melhorar, mais nao consegui colocar em 2 laços de repetição para ficar padronizado
alguém pode me ajudar ?
o Enunciado é o seguinte:
Escreva um programa para ler vários números até que a soma dos numeros lidos seja maior que 50. considere que não é permitida a entrada de mais de 50 números.
seu algoritmo deve parar quando uma dessas condições for atingida. A saida do programa deve ser a quantidade de números lidos e a palavra “SIM” somente quando a soma dos números for maior que 50 e “Não” caso contrário.
[code]#include <stdio.h>
int main ()
{ int i,soma, aux, vet[50];
i=0;
soma=0;
aux=1;
while (aux<50)
{ if (i<50)
{ printf(“Digite um Número: “);
scanf (”%d”,& vet[i]);
soma=soma+vet[i];
aux=soma;
i=i+1;
}
else
aux =aux +50;
}
printf(" Quantidade de numeros lidos : %d\n", i);
if (soma >= 50)
printf(“Sim\n”);
else
{ printf(“NÃo\n”);
}
return 0;
}
[/code][/quote]
Alterando de acordo com o que eu disse:
[code]#include <stdio.h>
int main ()
{ int i,soma, vet[50];
i=0;
soma=0;
while (soma<=50 || i<=50)
{ printf(“Digite um Número: “);
scanf (”%d”,& vet[i]);
soma=soma+vet[i];
i=i+1;
}
}
printf(" Quantidade de numeros lidos : %d\n", i);
if (soma >= 50)
printf(“Sim\n”);
else
{ printf(“NÃo\n”);
}
[quote=Michell Scherer]galera por motivos misticos não funfo!
vou deixar na gambiara mesmo kkkkkkkkkkk
esse while nao tah funcionando
ou ele faz um ou outro
ele nao sai do loop
mais obrgado ae galera[/quote]
Cara, totalmente bobeira minha, o correto é:
Como estava || (OU), ele fazia o seguinte:
A soma é maior que 50 ? Não, era para sair, mas ele faria o OU, i é menor que 50 ? Sim ! Então, fico no while. Entendeu?
Com o && (E) está resolvido, pois ambas as afirmações devem ser verdadeiras. Ou seja, se a soma for maior que 50, ele sai e o se já digitou mais de 50 numeros, também.
Senão, ele permanece em lopp. Testa ai,não precisa de “gambi” nao.