Rookie på C# Programmering 1
Ja, vart ska man börja.
Fått för mig att äntligen börja plugga igen efter 30 år i byggbranschen.
Systemutvecklare låter skoj, eller?
Skruva isär och sätta ihop datorer och lösa div. mjukvarurelaterade problem funkar ju fint.
Hur svårt kan det vara att lära sig koda?
Antagligen väldigt mycket lättare om man hade en riktig lärare. Läsa programmering på distans var inte som man hade tänkt sig.
Sambon pluggade på högskolan och hade kurser online och inspelade lektioner.
Vad får man på komvux?
Köp 2 böcker och uppgifter att lösa.
Går igenom Microsoft learn kursen samtidigt, både på webben samt youtube. Det får väl vara min lektioner.
Har dock knåpat ihop min första uppgift.
Handlar ju om växelkassan som behandlats här tidigare.
Jag ville inte bara ha "mata in pris, betalning och här får du tillbaks."
Jag ville se så att allt matats korrekt. inga bokstäver så programmet krashar osv.
Extremt mycket onödig kod som jag ska försöka förkorta, men ville se vad ni andra tycker.
Jag vill väldigt gärna lära mig detta riktigt, och inte halvdant från början.
Läste precis om
try
catch
kanske man ska skriva om för detta?
Dock ska uppgiften in på fredag och jag har pseudokod kvar samt flödesschema att göra.
Var inte för snälla utan säg verkligen hur mycket fel jag gjort.
using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace växelkassa3
{
internal class Program
{
static void Main(string[] args)
{
//variabler för att kontrollera så att inmatmingarna är korrekta.
bool inmatning = false;
double totalCost = 0;
double totalPay = 0;
//Välkomsthälsning
Console.WriteLine("Välkommen till den bästa kassaapparaten i världen!\nDu kommer få skriva in varans/varornas totalpris och jag räknar ut växel samt valörer åt dig." +
"\nTänk på att handla för minst 1 krona. Du kan testa med mindre och se om det funkar.");
//Vad varorna kostar samt en kontroll så att man bara skriver in siffror
do
{
Console.WriteLine("\nVad kostar varorna du handlat? ");
inmatning = double.TryParse(Console.ReadLine(), out totalCost);
if (!inmatning)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Tyvärr fungerar endast siffror i denna kassaapparaten.\nVar vänlig försök igen.");
Console.ForegroundColor = ConsoleColor.White;
}
}
while (!inmatning);
//Ser så du handlar för minimibeloppet 1 krona
inmatning = false;
while (totalCost < 1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Du måste tyvärr handla för minst 1 krona, annars går vi back.");
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Vad kostar varorna du handlat?");
inmatning = double.TryParse(Console.ReadLine(), out totalCost);
if (!inmatning)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Tyvärr fungerar endast siffror i denna kassaapparaten.\nVar vänlig försök igen.");
Console.ForegroundColor = ConsoleColor.White;
}
}
//Ser hur mycket du betalat samt sifferkontroll
inmatning = false;
while (!inmatning)
{
Console.WriteLine("\nHur mycket har du betalat för dina varor? ");
inmatning = double.TryParse(Console.ReadLine(), out totalPay);
if (!inmatning)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Tyvärr fungerar endast siffror i denna kassaapparaten.\nVar vänlig försök igen.");
Console.ForegroundColor = ConsoleColor.White;
}
}
//Ser så man inte betalat för lite
inmatning = false;
while (totalCost > totalPay && !inmatning)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Du behöver tyvärr betala minst hela summan det kostar.\nVar vänlig försök igen.");
Console.WriteLine("Hur mycket har du betalat?");
Console.ForegroundColor = ConsoleColor.White;
inmatning = double.TryParse(Console.ReadLine(), out totalPay);
}
// Räknar ut växeln. 2 variablar för att skriva ut både total samt avrundat till närmaste hel eller halv.
double totChangeBack = totalPay - totalCost;
double changeBack = totalPay - totalCost;
//Avrundar växel til närmaste hel eller halv. Hittat exemplet online
changeBack = Math.Round(changeBack * 2.0d) / 2.0d;
//Skriver ut växel att få tillbaks
Console.WriteLine("\nVäxel tillbaks \t\t" + totChangeBack +" kr.\nAvrundat \t\t" + changeBack + " kr.");
//Räknar ut antal sedlar och mynt med hjälp av modulus. Då int automatiskt avrundas när man konverterar från en double så använder jag (Math.Floor) för att alltid avrunda neråt till närmaste heltal.
int thousand = Convert.ToInt32(Math.Floor(changeBack / 1000));
changeBack %= 1000;
int fiveHundred = Convert.ToInt32(Math.Floor(changeBack / 500));
changeBack %= 500;
int twoHundred = Convert.ToInt32(Math.Floor(changeBack / 200));
changeBack %= 200;
int hundred = Convert.ToInt32(Math.Floor(changeBack / 100));
changeBack %= 100;
int fifty = Convert.ToInt32(Math.Floor(changeBack / 50));
changeBack %= 50;
int twenty = Convert.ToInt32(Math.Floor(changeBack / 20));
changeBack %= 20;
int ten = Convert.ToInt32(Math.Floor(changeBack / 10));
changeBack %= 10;
int five = Convert.ToInt32(Math.Floor(changeBack / 5));
changeBack %= 5;
int one = Convert.ToInt32(Math.Floor(changeBack % 5));
//För att få ut decimalen och veta om man ska få tillbaks 50 öre eller ej
double fiftyOre = changeBack % 1;
//Mellanrad
Console.WriteLine();
if (thousand > 0)
Console.WriteLine("Tusenlapp \t\t" + thousand + "st");
if (fiveHundred > 0)
Console.WriteLine("Femhundralapp \t\t" + fiveHundred + "st");
if (twoHundred > 0)
Console.WriteLine("Tvåhundralapp \t\t" + twoHundred + "st");
if (hundred > 0)
Console.WriteLine("Hundralapp \t\t" + hundred + "st");
if (fifty > 0)
Console.WriteLine("Femtiolapp \t\t" + fifty + "st");
if (twenty > 0)
Console.WriteLine("Tjugolapp \t\t" + twenty + "st");
if (ten > 0)
Console.WriteLine("Tiokrona \t\t" + ten + "st");
if (five > 0)
Console.WriteLine("Femkrona \t\t" + five + "st");
if (one > 0)
Console.WriteLine("Enkrona \t\t" + one + "st");
if (fiftyOre > 0.25 && fiftyOre < 0.75)
Console.WriteLine("Femtiöring \t\t" + "1st");
Console.WriteLine("\nHoppas du är nöjd och Välkommen Åter!");
Console.ReadLine();
}
}
}