4 svar
382 visningar
Froslev 15
Postad: 24 okt 2023 17:28

Följa ett aktivitetsdiagram - programmering 2 C#

Man ska alltså följa ett aktivitetsdiagram men jag är helt lost. Såhär ser det exempelvis ut ifall jag kör mitt program och skriver in min ålder som 50 år och mitt sparmål som 100 000kr: 

Välkommen!
Skriv in din ålder:
50
Skriv in ditt sparmål:
100000

Du har satt månadssparandet till: 3000 KR.

Du har satt månadssparandet till: 3000 KR.

Du har satt månadssparandet till: 3000 KR.

Du har satt månadssparandet till: 3000 KR.

Du har satt månadssparandet till: 3000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

Du har satt månadssparandet till: 5000 KR.

När du går i pension kommer du ha sparat: 80000Kronor.

 

Varför ändras det mitt i från 3000kr till 5000kr. Och jag ser ju att programmet tror att den ska spara en gång om året istället för i månaden och då skriver den alltså ut 15 gånger. 

Såhär ser diagrammet ut: 

 

Såhär ser koden ut: 

namespace Diagram_Kod;

class Program
{
    static void Main(string[] args)
    {
      int pengar = 15000; //Startvärde för pengar
      int ålder; //åldern på användaren som lagras
      string Inputålder; //åldern som användaren anger i programmet
      int Inputsparmål; //sparmålet som användaren anger i programmet
      int Differens = 0; //Sparmål som användaren anger - pengar 15000
      int månadssparande; //lagrar sparmålet i en int som användaren anger
      bool Pensionerad = false; //bool för att hålla reda på om användaren har gått i pension eller inte
     
     


        Console.WriteLine("Välkommen! \nSkriv in din ålder:  ");
        Inputålder = Console.ReadLine();
        ålder = int.Parse(Inputålder);
       
        //Console.WriteLine("Skriv in ditt sparmål:  ");
        //Inputspar = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Skriv in ditt sparmål:  ");
        Inputsparmål = int.Parse(Console.ReadLine());

        do
        {
         

          Differens = Inputsparmål - pengar;

          if (Differens < 10000 && ålder < 55)
          {
            månadssparande = 2000;
          }

          else if(Differens > 10000 && ålder >= 55)
          {
            månadssparande = 5000;
          }

          else
          {
            månadssparande = 3000;
          }

     
          Console.WriteLine("\nDu har satt månadssparandet till: " + månadssparande + " KR.");

 


          //if(pengar + månadssparande >= Inputsparmål)
          //{
            //pengar = Inputsparmål;
            //break;
          //}

          pengar += månadssparande;
          ålder++;


          //if(ålder >= 65)
          //{
            //Pensionerad = true;
            //break;
          //}

     

           
        }  while (pengar < Inputsparmål && ålder < 65);

 

        if(Pensionerad)
        {

          Console.WriteLine("\nGrattis! Du har gått i pension och har sparat: " + pengar + "Kronor.");
         
        }

        else
        {
          Console.WriteLine("\nNär du går i pension kommer du ha sparat: " + pengar + "Kronor.");

        }
       
         
     
       
       
       
      Console.ReadKey();
       

         


       
    }
   

 
}

Macilaci 2119
Postad: 24 okt 2023 18:28

Du följer inte aktivitetsdiagrammet.

Där diagrammet säger: "ANNARS OM differens är högre än 10000" skriver du "else if(Differens > 10000 && ålder >= 55)"

Inget problem med månad vs år, månadssparandet bestäms en gång per år.

Froslev 15
Postad: 24 okt 2023 18:47
Macilaci skrev:

Du följer inte aktivitetsdiagrammet.

Där diagrammet säger: "ANNARS OM differens är högre än 10000" skriver du "else if(Differens > 10000 && ålder >= 55)"

Inget problem med månad vs år, månadssparandet bestäms en gång per år.

Aha såg det nu och ändrade. Nu om jag kör programmet blir dete såhär:

Ska det verkligen månadssparandet ändras mitt i? Och jag förstår inte varför det skrivs ut samma meddelande flera gånger. Skriver den ut så många gånger som behövs för att komma till 65? Alltså ifall jag skriver åldern 60 i början så kommer programmet skriva ut meddelandet 5 gånger? Eller jag ser ju nu att det stämmer inte då meddelandet bara skrevs ut 9 gånger. 

 

Men om jag nu ändrar åldern till 70 och behåller samma sparmål på 50 000. Så skrivs detta ut:

Det där måste ju vara helt fel eller tänker jag helt konstigt. Har suttit med detta rätt länge så är nog lite trött i hvudet också.  Det där kanske jag inte ens behöver göra ifall jag enbart ska följa aktivitetsdiagrammet. 

Macilaci 2119
Postad: 24 okt 2023 19:27

Ska det verkligen månadssparandet ändras mitt i? 

Ja. När skillnaden blir mindre än 10000 reduceras beloppet till 3000.

Och jag förstår inte varför det skrivs ut samma meddelande flera gånger.

Det står i diagrammet: med varje år ska du skriva ut månadssparandet. Även om det inte förändras.

Skriver den ut så många gånger som behövs för att komma till 65?

Ja, om du inte hade sparat upp önskat belopp tidigare än så.

Men om jag nu ändrar åldern till 70 och behåller samma sparmål på 50 000. Så skrivs detta ut:

Det där måste ju vara helt fel eller tänker jag helt konstigt.

Nej, det är inte fel. Det beror på att diagrammet börjar med GÖR (dvs "do"). Det betyder att den kör minst en cykel oavsett. Man kan bara förvänta sig bra resultat med åldrar som är mindre än 65.

Froslev 15
Postad: 24 okt 2023 21:30 Redigerad: 24 okt 2023 21:41
Macilaci skrev:

Ska det verkligen månadssparandet ändras mitt i? 

Ja. När skillnaden blir mindre än 10000 reduceras beloppet till 3000.

Och jag förstår inte varför det skrivs ut samma meddelande flera gånger.

Det står i diagrammet: med varje år ska du skriva ut månadssparandet. Även om det inte förändras.

Skriver den ut så många gånger som behövs för att komma till 65?

Ja, om du inte hade sparat upp önskat belopp tidigare än så.

Men om jag nu ändrar åldern till 70 och behåller samma sparmål på 50 000. Så skrivs detta ut:

Det där måste ju vara helt fel eller tänker jag helt konstigt.

Nej, det är inte fel. Det beror på att diagrammet börjar med GÖR (dvs "do"). Det betyder att den kör minst en cykel oavsett. Man kan bara förvänta sig bra resultat med åldrar som är mindre än 65.

Okej jag förstår. Aha okej ja man tänker väl sig att man bara ska räkna upp till 65 ändå. Men ja det finns nog mer avancerade sätt man kan göra det på om man vill få det riktigt bra. Men detta är då alltså ändå okej med tanke på att man ska följa aktivitetsdiagrammet?. 

 

Jag löste allt nu. Tack så mycket för hjälpen :)

Svara
Close