Hjälp med C#, har kört fast helt och hållet. Ränta, sparmål och insättning med hjälp av iteration.

Permalänk

Hjälp med C#, har kört fast helt och hållet. Ränta, sparmål och insättning med hjälp av iteration.

Hej, Jag ska skriva ett program som frågar efter ett årligt insättningsbelopp och en
räntesats och ett sparmål. Programmet ska sedan med hjälp av en iteration
(loop) räkna ut hur många år det tar innan sparmålet uppnåtts.

Jag har problem med hur programmet skall kalkylera de inmatade värdena.
Hoppas någon kan hjälpa mig, här kommer min kod:

using System;

namespace Uppgift_1._1
{
class Program
{
static void Main(string[] args)
{

// Insättning, Sparmål, Ränta.
int antalår = 0;
int kontosaldo = 0;

Console.Write("Ange hur mycket du vill sätta in varje år: ");
double insättning = Convert.ToDouble(Console.ReadLine());
Console.Write("Ange ditt sparmål: ");
double sparmål = Convert.ToDouble(Console.ReadLine());
Console.Write("Ange räntesatsen i procent: ");
double ränta = (Convert.ToDouble(Console.ReadLine()));

if (insättning <= 0)

{
Console.WriteLine("Var vänlig och ange ett större tal än 0: ");
}

if (sparmål <= 0)
{
Console.WriteLine("Var vänlig och ange ett större tal än 0: ");
}

if (ränta <= 0)
{
Console.WriteLine("Var vänlig och ange ett större tal än 0: ");
}

{

{
double (kontosaldo);
while (kontosaldo < sparmål) {

insättning = insättning * (1 + ränta) + insättning;
antalår++;
}
}
}

Permalänk
Avstängd
Skrivet av JohanJohaan:

Hej, Jag ska skriva ett program som frågar efter ett årligt insättningsbelopp och en
räntesats och ett sparmål. Programmet ska sedan med hjälp av en iteration
(loop) räkna ut hur många år det tar innan sparmålet uppnåtts.

Jag har problem med hur programmet skall kalkylera de inmatade värdena.
Hoppas någon kan hjälpa mig, här kommer min kod:

using System; namespace Uppgift_1._1 { class Program { static void Main(string[] args) { // Insättning, Sparmål, Ränta. int antalår = 0; int kontosaldo = 0; Console.Write("Ange hur mycket du vill sätta in varje år: "); double insättning = Convert.ToDouble(Console.ReadLine()); Console.Write("Ange ditt sparmål: "); double sparmål = Convert.ToDouble(Console.ReadLine()); Console.Write("Ange räntesatsen i procent: "); double ränta = (Convert.ToDouble(Console.ReadLine())); if (insättning <= 0) { Console.WriteLine("Var vänlig och ange ett större tal än 0: "); } if (sparmål <= 0) { Console.WriteLine("Var vänlig och ange ett större tal än 0: "); } if (ränta <= 0) { Console.WriteLine("Var vänlig och ange ett större tal än 0: "); } { { double (kontosaldo); while (kontosaldo < sparmål) { insättning = insättning * (1 + ränta) + insättning; antalår++; } } }

Du sätter aldrig din variabel kontosaldo så det är ju ett problem. Jag tror raden:

insättning = insättning * (1 + ränta) + insättning;

Borde se ut som:

kontosaldo = kontosaldo * (1 + ränta) + insättning;

Men du bör tänka på formatet på räntan lite också, är det i procent eller decimaltal? Hursom blir nog uträkningen inte korrekt. Säg att man matar in 5 som ränta och kontosaldo är 100 insättning 10, vad blir då resultatet av ovanstående rader? Enligt mina överslagsräkningar så blir det 100 * 6 + 10 eller 610 vilket ju är helt fel.

Permalänk
Medlem

Jag tänker att uträkningen blir så här:

kontosaldo = insättning; antalår = 0; while (kontosaldo < sparmål) { antalår++; kontosaldo = kontosaldo * ränta + insättning; }

(ränta tänker jag är ett tal typ 1.02 (för 2% ränta).)

Du börjar med insättning kr. Om det redan är större eller lika med än sparmålet, ja då behöver du inte spara alls – antalår förblir 0.

Annars går vi in i loopen. Det går ett år. Då har du kontosaldo gånger ränta på kontot. Dessutom sätter du in insättning kr till. Och så rullar det på tills sparmålet är uppfyllt.

Permalänk
Medlem

Kanske denna tråden kan hjälpa dig, ni verkar ha fått samma uppgift

https://www.sweclockers.com/forum/trad/1630460-hjalp-med-c-ra...

Visa signatur

Tröttnat på att ha signatur

Permalänk
Skrivet av snajk:

Du sätter aldrig din variabel kontosaldo så det är ju ett problem. Jag tror raden:

insättning = insättning * (1 + ränta) + insättning;

Borde se ut som:

kontosaldo = kontosaldo * (1 + ränta) + insättning;

Men du bör tänka på formatet på räntan lite också, är det i procent eller decimaltal? Hursom blir nog uträkningen inte korrekt. Säg att man matar in 5 som ränta och kontosaldo är 100 insättning 10, vad blir då resultatet av ovanstående rader? Enligt mina överslagsräkningar så blir det 100 * 6 + 10 eller 610 vilket ju är helt fel.

hmm du tänker att jag bör använda "int" istället?

Permalänk
Avstängd
Skrivet av JohanJohaan:

hmm du tänker att jag bör använda "int" istället?

Nja, jag menar att du måste tänka på vad du kan få in för värden. Om du säger "Skriv in din ränta" så kanske en skriver 5, en annan 0,05 och en tredje 5% när alla menar samma sak. Säger du "skriv in din ränta i procent" så vet du mer vad du kommer att få.

Permalänk
Medlem
Skrivet av snajk:

Nja, jag menar att du måste tänka på vad du kan få in för värden. Om du säger "Skriv in din ränta" så kanske en skriver 5, en annan 0,05 och en tredje 5% när alla menar samma sak. Säger du "skriv in din ränta i procent" så vet du mer vad du kommer att få.

Och måste då också såklart ta hand om det från inmatningen. Koden så som den är skriven högre upp kommer ju inte att klara av en inmatning på "5%".

Jag tycker att det är rimligt att börja med något i stil med "skriv in din räntesats i decimalform" och köra med koden ovan som du har. Du kan utöka den senare till att hantera olika formaterad inmatning också.

Permalänk
Avstängd
Skrivet av MickeBoy:

Och måste då också såklart ta hand om det från inmatningen. Koden så som den är skriven högre upp kommer ju inte att klara av en inmatning på "5%".

Jag tycker att det är rimligt att börja med något i stil med "skriv in din räntesats i decimalform" och köra med koden ovan som du har. Du kan utöka den senare till att hantera olika formaterad inmatning också.

Jo precis, var tydlig i vad som förväntas. Men decimalform är inte heller helt klart vad som menas. Om jag har fem procent ränta, ska jag skriva 5,00; 0,05 eller 1,05? Alla är decimaltal.

Permalänk
Medlem
Skrivet av lydell:

Jag tänker att uträkningen blir så här:

kontosaldo = insättning; antalår = 0; while (kontosaldo < sparmål) { antalår++; kontosaldo = kontosaldo * ränta + insättning; }

(ränta tänker jag är ett tal typ 1.02 (för 2% ränta).)

Du börjar med insättning kr. Om det redan är större eller lika med än sparmålet, ja då behöver du inte spara alls – antalår förblir 0.

Annars går vi in i loopen. Det går ett år. Då har du kontosaldo gånger ränta på kontot. Dessutom sätter du in insättning kr till. Och så rullar det på tills sparmålet är uppfyllt.

Skrivet av snajk:

Jo precis, var tydlig i vad som förväntas. Men decimalform är inte heller helt klart vad som menas. Om jag har fem procent ränta, ska jag skriva 5,00; 0,05 eller 1,05? Alla är decimaltal.

Helt riktigt. Jag tänkte efteråt att jag skulle tagit med inlägget från lydell också för att peka på att det finns något däri som kan ge en hint om värdet på variabeln för räntan måste vara.

Jag tycker att användaren inte ska behöva ta hänsyn till den interna mekanismen i lösningen så kanske kan man förtydliga kravet på inmatning, t.ex. någonting i stil med "skriv in din räntesats i decimalform (t.ex. 0.05 eller 0.023 motsvarande 5% eller 2.3%)"?

Permalänk
Avstängd
Skrivet av MickeBoy:

Helt riktigt. Jag tänkte efteråt att jag skulle tagit med inlägget från lydell också för att peka på att det finns något däri som kan ge en hint om värdet på variabeln för räntan måste vara.

Jag tycker att användaren inte ska behöva ta hänsyn till den interna mekanismen i lösningen så kanske kan man förtydliga kravet på inmatning, t.ex. någonting i stil med "skriv in din räntesats i decimalform (t.ex. 0.05 eller 0.023 motsvarande 5% eller 2.3%)"?

Precis. Jag gjorde någon liknande grej när jag pluggade, beslutsstöd av något slag, och där använde vi en slider vilket underlättar.

Permalänk
Skrivet av snajk:

Nja, jag menar att du måste tänka på vad du kan få in för värden. Om du säger "Skriv in din ränta" så kanske en skriver 5, en annan 0,05 och en tredje 5% när alla menar samma sak. Säger du "skriv in din ränta i procent" så vet du mer vad du kommer att få.

Jag fattar ska, ska göra det, tack ☺️

Permalänk
Skrivet av MickeBoy:

Helt riktigt. Jag tänkte efteråt att jag skulle tagit med inlägget från lydell också för att peka på att det finns något däri som kan ge en hint om värdet på variabeln för räntan måste vara.

Jag tycker att användaren inte ska behöva ta hänsyn till den interna mekanismen i lösningen så kanske kan man förtydliga kravet på inmatning, t.ex. någonting i stil med "skriv in din räntesats i decimalform (t.ex. 0.05 eller 0.023 motsvarande 5% eller 2.3%)"?

Tack så mycket för tydligheten.

Permalänk
Skrivet av MickeBoy:

Helt riktigt. Jag tänkte efteråt att jag skulle tagit med inlägget från lydell också för att peka på att det finns något däri som kan ge en hint om värdet på variabeln för räntan måste vara.

Jag tycker att användaren inte ska behöva ta hänsyn till den interna mekanismen i lösningen så kanske kan man förtydliga kravet på inmatning, t.ex. någonting i stil med "skriv in din räntesats i decimalform (t.ex. 0.05 eller 0.023 motsvarande 5% eller 2.3%)"?

Tack så mycket för tydligheten.

Permalänk
Skrivet av MickeBoy:

Helt riktigt. Jag tänkte efteråt att jag skulle tagit med inlägget från lydell också för att peka på att det finns något däri som kan ge en hint om värdet på variabeln för räntan måste vara.

Jag tycker att användaren inte ska behöva ta hänsyn till den interna mekanismen i lösningen så kanske kan man förtydliga kravet på inmatning, t.ex. någonting i stil med "skriv in din räntesats i decimalform (t.ex. 0.05 eller 0.023 motsvarande 5% eller 2.3%)"?

Tack så mycket för tydligheten.