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;
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!
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!
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!
Ä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!
257 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2