Problem: "Riskornen på schackbrädet"
Mitt problem är:
Antag att du blir erbjuden ett jobb med lönen en krona första dagen. De följande dagarna får man dubbelt så hög dagslön som man fick föregående dag. Skulle du ta det jobbet eller ej?
Som hjälp för att avgöra det kan du använda följande program som avgör hur många dagar man måste arbeta för att tjäna ihop en viss mängd kronor. Tanken är alltså att man givet ett visst input (mängden kronor) får ut antalet dagar (som då talar om hur många dagar det tar). Skriv klart programmet.
Tips:
Kom i håg att dagslönen är en sak och vad man totalt tjänat in på alla arbetade dagar är en annan sak.
Du ska inte räkna ut det med ett långt matematiskt uttryck utan du ska loopa tills summan (som man totalt tjänat) är uppnådd och få reda på svaret genom att räkna hur många dagar (rundor i loopen) som det faktiskt tog
Eftersom vi inte på förhand vet hur många gånger vi kommer att loopa blir det enklast med en while-loop
Glöm inte att svaret (antalet dagar) måste returneras med return
Main-metoden nedan kräver inga ändringar.
Min kod hittills:
public class Salary {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int wantedMoney = scan.nextInt();
int nbrDays = calcNbrDays(wantedMoney);
System.out.println(nbrDays);
}
public static int calcNbrDays(int wantedSum) {
double sum = 0;
int nbrDays = 0;
while (!(sum == wantedSum)) {
sum = sum + Math.pow(2, nbrDays);
nbrDays++;
}
return nbrDays;
}
}
Kommer inte vidare och ser inte heller vad felet med min kod är. Funderar på om det ens går att använda Math.pow för att höja upp till en variabel?
Vad blir det för fel?
Hur ska koden funka om wantedSum = 5?
Laguna skrev:Vad blir det för fel?
Hur ska koden funka om wantedSum = 5?
Tack! Ändrade = till >= och då blev det rätt.