Inacabado Posted December 16, 2019 at 09:05 PM Report Share #616875 Posted December 16, 2019 at 09:05 PM este é um programa que é pedido num exercício de calculo de taxas. Eu fiz o programa e ele não me dá erro de sintaxe algum, mas ao entrar um valor ele não corre no resto do programa e fica sei lá "estúpido"...nem entra no while! segue o código: #include <iostream> const double Tax1=0.10; const double Tax2=0.15; const double Tax3=0.20; const int FirstStep=5000; const int SecondStep=15000; const int ThirdStep=35000; int main() { using namespace std; double income,remain,tax=0.0; printf("Enter your income: "); scanf("%lf",&income); while(income>FirstStep) { if(income>ThirdStep) { tax=(income-ThirdStep)*Tax3; income=ThirdStep; } else if(income<=ThirdStep&&income>SecondStep) { tax+=(income-SecondStep)*Tax2; income=SecondStep; } else if(income<SecondStep&&income>FirstStep) { tax+=(income-SecondStep)*Tax1; income=FirstStep; } } remain=income-tax; printf("Your income was of %g.\nTaxes=%g\nAfer Taxes" " you win just %g\n",income,tax,remain); return 0; } Não consigo perceber o erro... Precisa de alguma decrementação obrigatória??? Não sei; agradecia muito uma ajuda da comunidade. obrigado desde já. Um abraço ao HHH!!! Link to comment Share on other sites More sharing options...
Inacabado Posted December 16, 2019 at 09:51 PM Author Report Share #616877 Posted December 16, 2019 at 09:51 PM Já percebi onde está o erro! Ele não chega a entrar no 2º else if(income<SecondStep&&income>FirstStep), porque falta lá o igual! O income é igualado a 15000 no else if anterior , mas não chega a entrar neste por que a condição é falsa, por isso o loop infinito! Mesmo assim o programa está com erros lógicos! Link to comment Share on other sites More sharing options...
Inacabado Posted December 16, 2019 at 11:41 PM Author Report Share #616878 Posted December 16, 2019 at 11:41 PM E porque eu gosto de limar arestas e ter tudo a correr como deve ser. Já dei conta das falhas do programa e aqui está o código a correr limpinho, e a fazer o que deve fazer smoth... /* */ #include <iostream> const double Tax1=0.10; const double Tax2=0.15; const double Tax3=0.20; const int FirstStep=5000; const int SecondStep=15000; const int ThirdStep=35000; int main() { using namespace std; double income,remain,tax=0.0,tmp; printf("Enter your income: "); scanf("%lf",&income); tmp=income; while(tmp>FirstStep) { if(tmp>ThirdStep) { tax=(tmp-ThirdStep)*Tax3; tmp=ThirdStep; } else if(tmp<=ThirdStep&&tmp>SecondStep) { tax+=(tmp-SecondStep)*Tax2; tmp=SecondStep; } else if(tmp<=SecondStep&&tmp>FirstStep) { tax+=(tmp-FirstStep)*Tax1; tmp=FirstStep; } } remain=income-tax; printf("Your income was of %g.\nTaxes=%g\nAfer Taxes" " you win just %g\n",income,tax,remain); return 0; } Uma oferta para quem quiser calcular taxas, só têm que mudar as constantes! hehe Ah e um abraço ao Happy Hippo! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted February 14, 2020 at 07:52 PM Report Share #617352 Posted February 14, 2020 at 07:52 PM já que queres limpar o código, podes dizer quando é que no primeiro else if o valor tmp é maior que ThirdStep ? e no segundo else if, quando é que o tmp é Maori que SecondStep ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now