Meddelande

Minska
No announcement yet.

C# hjälp tack!

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • C# hjälp tack!

    Tja, har i uppgift att göra en sk växel-kassa. Såhär ska den se ut i slutändan;
    http://www.webforum.nu/attachment.ph...1&d=1347373470

    Mitt problem nu är att försöka få double, uint och int att gå ihop utan att returen av sedlar & mynt skrivs i decimaler också.

    Detta är mitt försök av en lösning (jo, den är åt helvete än sålänge );
    int betalade; //erhållna beloppet
    double totalsum; //totala bellopet
    int tillbaka;
    int resultat;
    uint roundingOffAmount;

    Console.Write("Ange totalsumma: "); totalsum = double.Parse(Console.ReadLine());
    Console.Write("Ange erhållet belopp: "); betalade = int.Parse(Console.ReadLine());
    tillbaka = betalade - totalsum;

    betalade = (uint)Math.Round(totalsum);
    roundingOffAmount = betalade - totalsum;

    resultat = tillbaka / 500;
    Console.WriteLine("Antal 500-lappar: {0}", resultat);
    tillbaka = tillbaka % 500;

    resultat = tillbaka / 100;
    Console.WriteLine("Antal 100-lappar: {0}", resultat);
    tillbaka = tillbaka % 100;

    resultat = tillbaka / 50;
    Console.WriteLine("Antal 50-lappar: {0}", resultat);
    tillbaka = tillbaka % 50;

    resultat = tillbaka / 20;
    Console.WriteLine("Antal 20-lappar: {0}", resultat);
    tillbaka = tillbaka % 20;

    resultat = tillbaka / 5;
    Console.WriteLine("Antal 5-kronor: {0}", resultat);
    tillbaka = tillbaka % 5;

    resultat = tillbaka / 1;
    Console.WriteLine("Antal 1-kronor: {0}", resultat);
    tillbaka = tillbaka % 1;


    Någon som känner sig manad? Tack i förhand!
    Bifogade filer

  • #2
    Flyttas från C/C++.

    Välkommen till webForum!
    @aviddevguy

    Kommentera


    • #3
      Tack för flytten. Inte för att vara den där, men du kan markera den som löst, efter först 2h slit (innan jag publicerade tråden) och sedan 3½h slit på det, lyckades ja fixa det! Får la tacka kaffekokarens tuffa uppdrag här bredvid mig!

      Kommentera


      • #4
        Det som vore supernajs, vore om du lade in lösningen i ett nytt inlägg, och sedan markerade det inlägget som lösning på problemet.

        Någon annan kan ju komma hit utan en lika tuff kaffekokare som din.

        Bra att du löste det!

        (Jag beklagar också att det tog ett par timmar för din tråd att publiceras - av någon anledning hade den fångats upp som spam av forummjukvaran...)
        @aviddevguy

        Kommentera


        • #5
          Convertade bara "totalsum" till en int ist; "tillbaka = betalade - (int)totalsum;" för att det inte skulle vara en error över hela skiten.
          I och med att man är ganska ny i programmeringsvärlden så krävdes en del google.

          Kaffekokare+1l muggtermos, de går hem i alla fall Och ingen fara alls, viktigaste är att man lyckades lösa det!

          Kommentera


          • #6
            Nu är man inne i "the finale", endast en grej kvar som verkligen INTE vill funka .. :'<

            I den första while-loopen så måste man ju såklart ha en "break;", men lägger jag den i slutet så hoppas if-satsen (som är inuti while-loopen) över dit och låter den inte ge användaren ett nytt försök till att knappa in totalsumman igen. Någon som kan ge förslag på hur jag ska lösa problemet?

            [kod] int betalade; // Erhållna beloppet
            double totalsum; // Totala bellopet
            uint subTotal;
            int tillbaka;
            int resultat;
            double roundingOffAmount;

            while (true)
            {
            try
            {
            // Hämtar det totala samt erhållna beloppet
            Console.Write("Ange totalsumma: "); totalsum = double.Parse(Console.ReadLine());

            if (totalsum < 0.50)
            {
            Console.BackgroundColor = ConsoleColor.Red;
            Console.WriteLine("Totalsumman är för liten. Köpet kunde inte genomföras!");
            Console.ResetColor();
            }
            }
            catch
            {

            Console.BackgroundColor = ConsoleColor.Red;
            Console.WriteLine("Var vänlig och ange belopp i form av en siffra!");
            Console.ResetColor();
            }
            }


            while (true)
            {
            try
            {
            Console.Write("Ange erhållet belopp: "); betalade = int.Parse(Console.ReadLine());
            break;
            }
            catch
            {
            Console.BackgroundColor = ConsoleColor.Red;
            Console.WriteLine("Var vänlig och ange belopp i form av en heltals-siffra!");
            Console.ResetColor();
            }
            }
            // Radbrytning (ej kommit på hur man gör det på ett "finare" sätt ännu.
            Console.WriteLine();

            //Kvitto
            Console.WriteLine("KVITTO");
            Console.WriteLine("---------------------");

            Console.WriteLine("Totalt: {0}", totalsum);
            //Öresavrundning
            subTotal = (uint)Math.Round(totalsum);
            roundingOffAmount = subTotal - totalsum;
            Console.WriteLine("Öresavrundning: {02}", roundingOffAmount);
            // Räknar ut Växeln
            tillbaka = betalade - (int)totalsum;
            Console.WriteLine("Att betala: {0}", subTotal);
            Console.WriteLine("Kontant: {0}", betalade);
            Console.WriteLine("Tillbaka: {0}", tillbaka);

            Console.WriteLine("---------------------");
            Console.WriteLine();
            resultat = tillbaka / 500;

            if (resultat > 0)
            {
            Console.WriteLine("Antal 500-lappar: {0}", resultat);
            tillbaka = tillbaka % 500;
            }

            resultat = tillbaka / 100;

            if (resultat > 0)
            {
            Console.WriteLine("Antal 100-lappar: {0}", resultat);
            tillbaka = tillbaka % 100;
            }

            resultat = tillbaka / 50;

            if (resultat > 0)
            {
            Console.WriteLine("Antal 50-lappar: {0}", resultat);
            tillbaka = tillbaka % 50;
            }

            resultat = tillbaka / 20;

            if (resultat > 0)
            {
            Console.WriteLine("Antal 20-lappar: {0}", resultat);
            tillbaka = tillbaka % 20;
            }

            resultat = tillbaka / 5;

            if (resultat > 0)
            {
            Console.WriteLine("Antal 5-kronor: {0}", resultat);
            tillbaka = tillbaka % 5;
            }

            resultat = tillbaka / 1;

            if (resultat > 0)
            {
            Console.WriteLine("Antal 1-kronor: {0}", resultat);
            tillbaka = tillbaka % 1;
            }[/kod]

            PS: Ni kan kolla på bilden i första inlägget på hur den ser ut när den exekveras!

            Tack i förhand!

            Kommentera


            • #7
              Ännu en post som man faktiskt lyckades fixa! Snabbare denna gång.

              Misstaget jag gjorde innan är att jag la in en break; utan en else term.

              if (totalsum < 0.50)
              {
              Console.BackgroundColor = ConsoleColor.Red;
              Console.WriteLine("Totalsumman är för liten. Köpet kunde inte genomföras!");
              Console.ResetColor();
              }
              else
              break;

              så funkar det!

              Kommentera

              Working...
              X