Boa tarde,
Estou com uns problemas no meu programa…
“Um hotel concebeu uma forma original de cobrar aos seus clientes. A primeira noite custa 50 Euros,
a segunda 25 Euros (50/2), a n-ésima custa 50/n Euros.
Calcule a cobrança a efetuar a um cliente que ficou n noites no hotel (preço a pagar por noite e o total)”
publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);System.out.print("Introduza o numero de noites da sua reserva : ");intnoDias=sc.nextInt();intamt=0;if(noDias<=1)amt=noDias*50;elseif(noDias<=2)amt=2*50+((noDias-4)*50);elseif(noDias<=9)amt=3*350+3*300+((noDias-6)*275);elseamt=3*350+3*300+3*275+((noDias-9)*225);sc.close();System.out.println("Numero de noites dormidas: "+noDias);System.out.println("Preco Total a pagar: "+amt);
publicclassApp{publicstaticvoidmain(String...args){doubleprecoInicial=50;intquantidadeDeNoites=5;doubleprecoFinal=precoInicial;System.out.printf("Preço da 1ᵃ noite: €%.2f\n",precoFinal);for(inti=2;i<=quantidadeDeNoites;i++){doubleprecoDaNoite=precoInicial/i;System.out.printf("Preço da %dᵃ noite: €%.2f\n",i,precoDaNoite);precoFinal+=precoDaNoite;}System.out.printf("Preço total: €%.2f\n",precoFinal);}}
M
MiguelAmaro
Certo, mas no caso de “n” noites o preco seria 50/n…
Como por no programa?
Usando If e else…
Obrigado pela ajuda!
wldomiciano2 likes
if e else não são adequados para este problema porque vc não sabe quantas noites o hóspede vai ficar.
Imagine que ele vai ficar 1000 noites, vc teria que criar 1000 condições e isto é inviável.
De qualquer forma, daria para fazer usando apenas if. Seria algo assim:
publicclassApp{publicstaticvoidmain(String...args){doubleprecoInicial=50;intquantidadeDeNoites=0;doubleprecoFinal=0;if(quantidadeDeNoites>0){precoFinal=precoInicial;System.out.printf("Preço da 1ᵃ noite: €%.2f\n",precoInicial);}if(quantidadeDeNoites>1){doubleprecoDaNoite=precoInicial/2;precoFinal+=precoDaNoite;System.out.printf("Preço da 2ᵃ noite: €%.2f\n",precoDaNoite);}if(quantidadeDeNoites>2){doubleprecoDaNoite=precoInicial/3;precoFinal+=precoDaNoite;System.out.printf("Preço da 3ᵃ noite: €%.2f\n",precoDaNoite);}if(quantidadeDeNoites>3){doubleprecoDaNoite=precoInicial/4;precoFinal+=precoDaNoite;System.out.printf("Preço da 4ᵃ noite: €%.2f\n",precoDaNoite);}if(quantidadeDeNoites>4){doubleprecoDaNoite=precoInicial/5;precoFinal+=precoDaNoite;System.out.printf("Preço da 5ᵃ noite: €%.2f\n",precoDaNoite);}System.out.printf("Preço total: €%.2f\n",precoFinal);}}
M
MiguelAmaro1 like
Sim, e isso. Muito obrigado pela ajuda!
hugokotsubo
Mas por que vc quer fazer esse monte de if e else? Se vc não sabe a quantidade - e pelo jeito pode ser qualquer valor - o mais adequado (sensato, correto, sem gambiarra, etc) é usar um loop, como já foi sugerido.