Permalänk
Medlem

Sekvensschema C#

Jag ska skriva ett program utifrån ett sekvensschema och har stött på lite problem och har några frågor.
Till och börja med så hoppar loopen tillbaka till if-satsen och skriver varje gång ut "You are saving little" min stora fråga nu är, hur gör jag för att då den och enbart skriva ut den string första gången den går igenom loopen? Kan man använda sig av en metod i detta fall på något sätt? Bifogar sekvensschemat och koden.

namespace M2AkrivitetsDiagram { class Program { static void Main(string[] args) { Console.WriteLine("Enter age: "); string ageInput = Console.ReadLine(); int age = int.Parse(ageInput); int money = 15000; do { if (money > 20000 || age < 60) { Console.WriteLine("You are saving little"); money = money + 500; age++; } else { Console.WriteLine("You are saving alot"); money = money + 1000; age++; } } while (money < 20000 && age < 65); Console.WriteLine("You are retired by the age of " + age); Console.WriteLine("You have saved " + money + " dollar"); Console.ReadLine(); } } }

länk till bilden: http://forumbilder.se/I4G5Q/bild1

Permalänk
Medlem

Du får ha en flagga (boolean) som som indikerar om det gäller.

Permalänk
Medlem

Varför vill du endast skriva ut meddelandena en gång? Sekvensschemat säger ju att de ska skrivas ut i varje iteration av loopen, så om du ändrar på det så följer du inte längre schemat. Vad jag kan se så följer du schemat nästan perfekt nu, förutom hur du ökar på åldern i varje iteration.

Men om du ändå vill implementera det så skulle du t.ex. kunna ha en variabel som håller reda på hur mycket pengar som sparades i den föregående iterationen, och endast skriva ut strängen om den mängden skiljer sig från hur mycket som sparas i den pågående iterationen.

Permalänk
Medlem
Skrivet av perost:

Varför vill du endast skriva ut meddelandena en gång? Sekvensschemat säger ju att de ska skrivas ut i varje iteration av loopen, så om du ändrar på det så följer du inte längre schemat. Vad jag kan se så följer du schemat nästan perfekt nu, förutom hur du ökar på åldern i varje iteration.

Men om du ändå vill implementera det så skulle du t.ex. kunna ha en variabel som håller reda på hur mycket pengar som sparades i den föregående iterationen, och endast skriva ut strängen om den mängden skiljer sig från hur mycket som sparas i den pågående iterationen.

Okej, då lämnar jag koden som den är om den följs perfekt efter schemat Men tänker på att jag har age++; i varje iteration, är det inte det som schemat anger eller tänker jag helt fel?

Permalänk
Medlem
Skrivet av hexakon:

Okej, då lämnar jag koden som den är om den följs perfekt efter schemat Men tänker på att jag har age++; i varje iteration, är det inte det som schemat anger eller tänker jag helt fel?

Du har age++ på två olika ställen medan schemat endast har det på ett ställe.

Permalänk
Medlem
Skrivet av perost:

Du har age++ på två olika ställen medan schemat endast har det på ett ställe.

Så enligt schemat ska age++; alltså ligga efter if & else-satserna såhär:

namespace M2AkrivitetsDiagram { class Program { static void Main(string[] args) { Console.WriteLine("Enter age: "); string ageInput = Console.ReadLine(); int age = int.Parse(ageInput); int money = 15000; do { if (money > 20000 || age < 60) { Console.WriteLine("You are saving little"); money = money + 500; } else { Console.WriteLine("You are saving alot"); money = money + 1000; } age++; } while (money < 20000 && age < 65); Console.WriteLine("You are retired by the age of " + age); Console.WriteLine("You have saved " + money + " dollar"); Console.ReadLine(); } } }

Permalänk
Medlem
Skrivet av hexakon:

Så enligt schemat ska age++; alltså ligga efter if & else-satserna såhär:

Ja, precis. Och se förresten denna sida för skillnaden mellan "a lot" och "alot"

Permalänk
Medlem
Skrivet av perost:

Ja, precis. Och se förresten denna sida för skillnaden mellan "a lot" och "alot"

Tack för hjälpen och de goda skratten! ;D