---
title: "C# hjälp tack!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/190320-c-hjälp-tack"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Cleashy"
published: "2012-09-11T14:25:40.000Z"
updated: "2012-09-16T21:24:16.000Z"
replies: 6
views: 2797
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/190320-c-hjälp-tack"
---

# C# hjälp tack!

## #1 — Cleashy, 2012-09-11T14:25Z

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.php?attachmentid=23413&stc=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!

Bilagor:

- [helpqt.jpg](https://www.webforum.nu/a/23413.jpg)

Permalänk: https://www.webforum.nu/p/190320

## #2 — @nders, 2012-09-11T16:26Z

Flyttas från C/C++.

Välkommen till webForum!

Permalänk: https://www.webforum.nu/p/2304583

## #3 — Cleashy, 2012-09-11T16:47Z

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!

Permalänk: https://www.webforum.nu/p/2304585

## #4 — @nders, 2012-09-11T17:41Z

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...)

Permalänk: https://www.webforum.nu/p/2304586

## #5 — Cleashy, 2012-09-11T20:14Z

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!

Permalänk: https://www.webforum.nu/p/2304589

## #6 — Cleashy, 2012-09-16T21:17Z

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?

```
            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: {0:f2}", 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;
            }
```

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

Tack i förhand!

Permalänk: https://www.webforum.nu/p/2304717

## #7 — Cleashy, 2012-09-16T21:24Z

Ä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!

Permalänk: https://www.webforum.nu/p/2304718

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/190320-c-hjälp-tack
