5 svar
107 visningar
EmGo behöver inte mer hjälp
EmGo 3
Postad: 8 apr 2023 22:56

Får inte till Do While loopen

Hej! 

Uppgiften säger:

Denna uppgift går ut på att skapa en kod utifrån ett aktivitetsdiagram. 

Utifrån det färdiga programmet ska ni besvara:

Hur mycket i pension får personen om han eller hon skriver in åldern 58?

(allså är tanken att man ska be personen mata in sin ålder och beräkna pensionen vid 58 års åldern. Startpengen är angiven till 15000 och det ska ökas med 500 eller 1000 beroende vart i loopen man är. )

Dom har angivit att do, if, else och while ska användas i uppgiften. 

Jag får felsvar på min kod och kan inte lista ut var jag falerar :( 

Min kod: 

 

using System;

namespace Aktivitetsdiagram

{

class Program

{

public static void Main(string[] args)

{

Console.WriteLine("Enter age: "); //be användaren mata in sin ålder

do

{

int money=15000; // pengar

int age; //användarens inmatning av ålder

age++; //ökar ålder med 1 för varje varv som körs

if (money>20000 || age<60) //om pensionen är större än 20000 och ålder under 60 år

{

Console.WriteLine("You are saving a little");

money = money + 500; //lägg på 500 på pengar

}

else

{

Console.WriteLine("You are saving a lot"); // om inte if stämmer

money = money +1000; //lägg på 1000 på pengar

}

while(money<20000 && age<65) //kör loppen så länge pengar är under 20000 och åldern är under 65

{

Console.WriteLine("You are retired by the age of" + age);

Console.WriteLine("You have saved " + money + "dollar.");

}

Console.ReadKey();

}

} } }

anders_k 237
Postad: 9 apr 2023 00:14 Redigerad: 9 apr 2023 00:27

när man kollar lite snabbt, vad tror du "age" har för ursprungsvärde?

räkna ut en formel för att beräkna pensionen, oftast finns det en enklare lösning

EmGo 3
Postad: 9 apr 2023 07:53 Redigerad: 9 apr 2023 07:59

Ja, har haft med två rader som skulle ändra string till int, men tog bort det då det gav ännu fler felsvar. 

Nu testade jag att skriva så här och kan ändå inte köra koden :( 

 

do

{

int money=15000; // pengar

string age = Console.Readline(); //användarens inmatning av ålder

int age1 = int.Parse(age);

age++; //ökar ålder med 1 för varje varv som körs

anders_k 237
Postad: 9 apr 2023 11:01

du får flytta inmatningen av age till utanför loopen.

EmGo 3
Postad: 9 apr 2023 11:06

Yes, fick till det till slut. Efter lite omöblering så insåg jag att det hamnat fel. 

Tack för att du tog dig tid att kolla & svara :) 

anders_k 237
Postad: 9 apr 2023 11:19

Bra, men för framtiden bryt upp din uppgift i olika funktioner så blir det lättare att överblicka t.ex.

 

public static int GetAge()
{
  System.Console.Write("Ange ålder:");
  string s = Console.ReadLine();
  Int32.TryParse(s, out var age);
  return age;
}

Sen ropar du dem från Main, annars blir Main så klottrig

Svara
Close