Behöver hjälp med Programmerings uppgift

Permalänk

Behöver hjälp med Programmerings uppgift

Hej har kört fast på en uppgift och undra ifall någon hör skulle kunna hjälpa mig.
Uppgiften lyder:
Varje årsskifte sätter Mio in 1000 kr på sitt bankkonto.
Kontot är från början är tomt.
Årsräntan är hela tiden 5%.
Hur mycket finns det på kontot inklusive ränta då dett gått 20 år efter den första insättningen och efter att Mio har satt in sitt 21:a belopp?
Lös problemet med ett program som utnyttjar en for-sats.
Tips: Varje årsskifte ska behållningen multipliceras med 1.05 (då räntan är 5%) innan frn nya insättningen kommer.

Tack😁

Permalänk
Medlem

Vad är det som du fastnat på? Och vilket programmeringsspråk skall du använda?

Permalänk
Medlem

Gör en FOR-sats som loopas rätt antal gånger där du räknar summan på kontot = (summan på kontot * 1,05)+1000 i varje loop.

Visa signatur

"When I get sad, I stop being sad and be awsome instead, true story."

Permalänk
Medlem
Skrivet av Json_81:

Gör en FOR-sats som loopas rätt antal gånger där du räknar summan på kontot = (summan på kontot * 1,05)+1000 i varje loop.

Vet inte om vi borde hjälpa till med vad som uppenbart är en läxa.

Om du har något mer specifikt problem så kanske vi kan hjälpa till.

Visa signatur

Corsair Obsidian 250D | i5 7600K | Gigabyte Z270N WiFi | Samsung 960 EVO 250GB | Fractal Design Integra M 650W | Corsair Hydro H90 |Kingston 8GB 2133M DDR4 CL14 | Asus GeForce GTX 970 4GB STRIX DC2 OC MAX |

Permalänk
Inaktiv

Står ju i princip hela lösningen i uppgiftstexten

Permalänk
Medlem
Skrivet av Dakkie:

Vet inte om vi borde hjälpa till med vad som uppenbart är en läxa.

Varför inte?
Att rakt av ge en lösning kodad och klar håller jag med om att ingen borde göra men det tycker jag inte mitt inlägg är.

Visa signatur

"When I get sad, I stop being sad and be awsome instead, true story."

Permalänk
Medlem
Skrivet av lilly3773:

Hej har kört fast på en uppgift och undra ifall någon hör skulle kunna hjälpa mig.
Uppgiften lyder:
Varje årsskifte sätter Mio in 1000 kr på sitt bankkonto.
Kontot är från början är tomt.
Årsräntan är hela tiden 5%.
Hur mycket finns det på kontot inklusive ränta då dett gått 20 år efter den första insättningen och efter att Mio har satt in sitt 21:a belopp?
Lös problemet med ett program som utnyttjar en for-sats.
Tips: Varje årsskifte ska behållningen multipliceras med 1.05 (då räntan är 5%) innan frn nya insättningen kommer.

Tack😁

För att få hints i rätt direction behöver jag se:
- Din kod du har just nu.
- Vilket språk du skriver i.
- Vad du testat / vad du förväntar dig ska hända eller vill ska hända.

Varför läser du annars programmering om du vill att andra ska göra jobbet åt dig? Största delen av programmering är just problemlösning efter krav.

Skrivet av Json_81:

Varför inte?
Att rakt av ge en lösning kodad och klar håller jag med om att ingen borde göra men det tycker jag inte mitt inlägg är.

Du gav i princip en lösning rakt av med matteuträningen och tillvägagångssättet (även om det i princip står i uppgiften). Bättre att få se personens kod först och ge hints i rätt direction än att bara skriva ut ett svar. Personen ska ju lära sig också.

Permalänk
Medlem

Ingen här kommer lösa det åt dig, utan du får försöka själv först. Sen om du kör fast kan du återkomma med mer specifika frågor

Visa signatur

Intel i7 4970K, Fractal define mini, 24GB DDR3 1600mhz , 500GB SSD * 2 RAID0, GeForce 1060 6gb

Permalänk
Medlem
Skrivet av zaibuf:

Du gav i princip en lösning rakt av med matteuträningen och tillvägagångssättet (även om det i princip står i uppgiften). Bättre att få se personens kod först och ge hints i rätt direction än att bara skriva ut ett svar. Personen ska ju lära sig också.

Matten är väl förhoppningsvis inte den viktigaste delen även om jag ser din poäng.
Jobbar med kravhantering så hade definitivt gett utvecklarna formeln så de kan fokusera på loopen

Visa signatur

"When I get sad, I stop being sad and be awsome instead, true story."

Permalänk
Medlem

Här är lösningen i nåt Java-liknande. Inte testat om det kompilerar, men borde typ va rätt.

public class Main { static final double START_BALANCE = 1000.0; static final double INTEREST = 0.05; static final int SAVING_YEARS = 20; public static void main(String[] args) { double interestRate = 1.0 + interest; double endBalance = START_BALANCE * Math.pow(interestRate, SAVING_YEARS); for (;;) {} System.out.println("Efter " + SAVING_YEARS + " års sparande har du " + endBalance + "kr på kontot "); } }

Skickades från m.sweclockers.com

Visa signatur

Arbets- / Spelstation: Arch Linux - Ryzen 5 3600 - RX 7900 XT - 32G DDR4
Server: Arch Linux - Core i5-10400F - 16G DDR4

Permalänk
Skrivet av Bryal:

Här är lösningen i nåt Java-liknande. Inte testat om det kompilerar, men borde typ va rätt.

public class Main { static final double START_BALANCE = 1000.0; static final double INTEREST = 0.05; static final int SAVING_YEARS = 20; public static void main(String[] args) { double interestRate = 1.0 + interest; double endBalance = START_BALANCE * Math.pow(interestRate, SAVING_YEARS); for (;;) {} System.out.println("Efter " + SAVING_YEARS + " års sparande har du " + endBalance + "kr på kontot "); } }

Skickades från m.sweclockers.com

Nej du sätter in 1000 varje år. Sen är java besvärlig med VERSALER och gemener (INTEREST än inte samma som interest).
Det bör bli ca 37 000 efter 20 år.

Permalänk
Medlem
Skrivet av Greyguy1948:

Nej du sätter in 1000 varje år. Sen är java besvärlig med VERSALER och gemener (INTEREST än inte samma som interest).
Det bör bli ca 37 000 efter 20 år.

Ja attans det har du rätt i. Missade att det var årlig insättning. Då får man istället utnyttja att årliga insättningar med ränta utgör en geometrisk summa, så är följande en lösning

public class Main { static final double START_BALANCE = 1000.0; static final double INTEREST = 0.05; static final int SAVING_YEARS = 20; public static void main(String[] args) { double interestRate = 1.0 + INTEREST; // Årliga insättningar med ränta ger en geometrisk summa. // Vi utnyttjar formeln $s = a * ((1 − r^n) / (1 − r))$. double endBalance = START_BALANCE * (1.0 - Math.pow(interestRate, SAVING_YEARS + 1)) / (1.0 - interestRate); for (;;) {break;} System.out.println("Efter " + SAVING_YEARS + " års sparande har du " + endBalance + "kr på kontot "); } }

Fixade också en bugg med for-loopen.

Visa signatur

Arbets- / Spelstation: Arch Linux - Ryzen 5 3600 - RX 7900 XT - 32G DDR4
Server: Arch Linux - Core i5-10400F - 16G DDR4

Permalänk
Medlem

Kan säga på en gång att du inte förstått uppgiften, du ska lösa problemet med hjälp av en for-loop, inte lösa det med en formel och sedan slänga in en tom loop i slutet...
En for-loop ser ut:

for(initialiser; loop-condition; iteration){ // Logik }

Så om jag vill addera alla tal mellan 1-10 skulle jag kunna lösa det med en loop som ser ut:

int sum = 0 for(int addToSum = 1; addToSum <= 10; addToSum += 1) { sum += addToSum; }

Sitter på telefonen så garanterar inte att det där kompilerar, men bör vara tillräckligt för att förklara idén

Skickades från m.sweclockers.com

Permalänk
Medlem

https://repl.it/@johanbx/sweclockers-liten-programmings-uppgi...

Svar:

bank = 0 for x in range(20): bank += 1000 bank *= 1.05 print(bank)

Dold text
Permalänk

En variant i C

Det är alltid lika trist när trådskaparen tappar intresset men tyvärr ganska vanligt. Här är C med utskrift varje år:

# include <stdio.h>

int main()
{
int anno;
float saldo, ins;

saldo = 0;
ins=1000;
for (anno=0; anno<21; anno++)
{
saldo=1.05*saldo+ins;
if (saldo<10000) printf("%3d %7.2f \n", anno, saldo);
else
printf("%3d %7.2f \n", anno, saldo);
}
}

Permalänk
Keeper of Traditions
Skrivet av Greyguy1948:

Det är alltid lika trist när trådskaparen tappar intresset men tyvärr ganska vanligt. Här är C med utskrift varje år:

Brukar väl bli så med nyregistrerade konton som bara vill ha någon som gör hemläxan åt dem?

Visa signatur

|| Intel 8700K || Asus RTX 4070 TI Super TUF || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem
Skrivet av Sholdar:

Kan säga på en gång att du inte förstått uppgiften, du ska lösa problemet med hjälp av en for-loop, inte lösa det med en formel och sedan slänga in en tom loop i slutet...
En for-loop ser ut:

for(initialiser; loop-condition; iteration){ // Logik }

Så om jag vill addera alla tal mellan 1-10 skulle jag kunna lösa det med en loop som ser ut:

int sum = 0 for(int addToSum = 1; addToSum <= 10; addToSum += 1) { sum += addToSum; }

Sitter på telefonen så garanterar inte att det där kompilerar, men bör vara tillräckligt för att förklara idén

Skickades från m.sweclockers.com

Ja nu blev det allt nån variant av Poes lag i handling här känner jag.

Jag är medveten om hur for-loopar fungerar, och ville med mina inlägg framföra en kritik mot uppgiften med sarkasm. Snarare än att jag inte förstått uppgiften så tycker jag att uppgiftsmakaren inte förstått problemet. Vad är egentligen poängen med att lösa detta problem med en for-loop istället för en simpelt uttryck som i min lösning? Loop-lösningen tar linjär tid att beräkna, medan lösningen med formeln tar konstant tid. Hade man på en arbetsintervju kommit med loop-lösningen som sitt bästa svar hade man knappast fått god respons. Ännu värre hade varit om man använde en sådan lösning i en verklig applikation - många slösade klockcykler!

Vad jag vill komma fram till egentligen är att utbildare borde lära ut rätt från början. Uppgifter som trådens lär bara ut dåliga vanor. Antingen borde uppgiften lösa ett problem där den linjära lösningen är optimal, till exempel sträng-sammanslagning, eller så omformuleras den så att det framgår att mer optimala lösningar finns, men att studenten till att börja med uppmuntras implementera någon naïv lösning för att lära sig ett specifikt koncept. Kanske får man nåt bonuspoäng om man finner den optimala lösningen?

Fast förstås, vad vet jag egentligen om den här specifika situationen. Kanske börjar nästa uppgift i boken med "Och nu visar vi er en mycket bättre lösning på föregående problem!". Kanske sitter jag här och stör mig helt i onödan...

Visa signatur

Arbets- / Spelstation: Arch Linux - Ryzen 5 3600 - RX 7900 XT - 32G DDR4
Server: Arch Linux - Core i5-10400F - 16G DDR4

Permalänk
Medlem
Skrivet av Bryal:

Jag är medveten om hur for-loopar fungerar, och ville med mina inlägg framföra en kritik mot uppgiften med sarkasm. Snarare än att jag inte förstått uppgiften så tycker jag att uppgiftsmakaren inte förstått problemet. Vad är egentligen poängen med att lösa detta problem med en for-loop istället för en simpelt uttryck som i min lösning? Loop-lösningen tar linjär tid att beräkna, medan lösningen med formeln tar konstant tid. Hade man på en arbetsintervju kommit med loop-lösningen som sitt bästa svar hade man knappast fått god respons. Ännu värre hade varit om man använde en sådan lösning i en verklig applikation - många slösade klockcykler!

Syftet med uppgiften i fråga är ju knappast att träna på hur man räknar ut ränta-på-ränta problem, utan snarare att ge träning på att använda for-loopar.
Med andra ord, själva uträkningen är tämligen oviktig i det här fallet.

Permalänk
Medlem

Kan ni inte bara lägga ner att ge svaret, nu var det ju dock med en del fel, så kanske personen lär sig istället för att man upptäcker att hen inte kan något själv efter man anställt personen...
Just saying...

Visa signatur

Fulburken:
| I9 9900K
| Gigabyte Aorus Z390 AORUS MASTER
| Asus RTX 3090 Strix OC

Permalänk
Medlem
Skrivet av Erik_T:

Syftet med uppgiften i fråga är ju knappast att träna på hur man räknar ut ränta-på-ränta problem, utan snarare att ge träning på att använda for-loopar.
Med andra ord, själva uträkningen är tämligen oviktig i det här fallet.

Fast allt man lär sig hamnar ju i den mentala verktygslådan. Om TS en dag ska lösa ett liknande problem och kommer på att "Jamen, något liknande löste ju jag med en for-loop en gång!", så är ju det inte bra. Det finns andra problem där for-loopar kan vara helt rätt verktyg att applicera, men inte i detta fallet. Bäst att folk som lär sig lär sig rätt från början. Jag tänker att det hade vart så trivialt för en (kompetent) uppgiftsmakare att istället för

"Lös ... med en for-loop"

skriva nåt i stil med

"Nu ska vi lära oss om loopar. Lös ... med en for-loop. Sidenote: Denna uppgiften är till för att du ska lära dig om loopar, och lösningen är inte optimal. Om du får tid över kan du försöka klura ut en bättre lösning. Extra läsning: Wikipedia - Talföljd".

Det är specifikt meningen "Lös problemet med ett program som utnyttjar en for-sats." i ursprungsuppgiften som jag har problem med. Visst, syftet är att lära sig om loopar, men om en student faktiskt är lite kreativ och finner en bättre lösning som inte använder loopar, borde inte det berömmas? I slutändan ska ju en programmerare trots allt vara en problemlösare, inte en for-loop-producerare.

Visa signatur

Arbets- / Spelstation: Arch Linux - Ryzen 5 3600 - RX 7900 XT - 32G DDR4
Server: Arch Linux - Core i5-10400F - 16G DDR4

Permalänk
Medlem
Skrivet av Bryal:

I slutändan ska ju en programmerare trots allt vara en problemlösare, inte en for-loop-producerare.

En programmerare ska också kunna följa en kravspecifikation.

Visa signatur

"When I get sad, I stop being sad and be awsome instead, true story."

Permalänk
Hedersmedlem

*Tråd låst*

Tråd låst i enlighet med §3.4. Detta då vi inte tillåter direkt uppgiftslösning/läxhjälp i forumet (lös uppgiften åt mig).

Visa signatur

Danskjävel så krattar som en skrivare...