Miniräknare C#, Granska och kommentera gärna min kod. Alla tips uppskattas.*updated

Permalänk
Medlem

Miniräknare C#, Granska och kommentera gärna min kod. Alla tips uppskattas.*updated

Hej SweClockers!

Jag har ett brinnande intresse för kod och är fortfarande nybörjare. Jag vill lära mig mer men behöver få lite tips på vad jag kan göra bättre och framförallt att se nya möjligheter.

Alla kritik uppskattas!

Mitt case 5, som tar multiple inputs till en list i form av objects, för att addera eller subtraktion är jag inte riktigt nöjd med min foreach loop i main. Men jag har försökt bryta ut, dock utan bra resultat. Det är case 5 jag har mest problem med att få den snygg. :s

mvh, Kembali

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; using System.IO; namespace ConsoleApplicationEASTER { public class ClassFunctions : ClassMultipleIncome { internal int Substract(int x, int y){ return x - y; } internal int Multiply(int x, int y){ return x * y; } internal int Add(int x, int y){ return x + y; } internal int Divide(int x, int y){ return x / y; } } public class ClassUserActivity{ public static int inData1 { get; set; } public static int inData2 { get; set; } public static string inString { get; set; } } public class Program { static void Menu(){ Console.WriteLine("1. Multiplikation" + Environment.NewLine + "2. Additation" + Environment.NewLine + "3. Division" + Environment.NewLine + "4. Substraktion" + Environment.NewLine + "5. Multi list" + Environment.NewLine + "6. Exit"); } static string tal1() { return "Tal 1: "; } static string tal2(){ return "Tal 2: "; } public enum Operator{ Multiplication = 1, Addition, Division, Substraction, MultipleAddition, Exit } public static void Main(string[] args){ Menu(); // get value user provided int OperatorInt = Int32.Parse(Console.ReadLine()); Operator IncomeInteger = (Operator)OperatorInt; Console.Clear(); Console.WriteLine("**En simpel miniräknare**"); //Get instance ClassDisplayCalculator display = new ClassDisplayCalculator(); Console.WriteLine(); switch (IncomeInteger) { case Operator.Multiplication: Console.WriteLine("Case1 - Multiplikation"); Console.WriteLine("Skriv in två heltal."); Console.Write(tal1()); ClassUserActivity.inData1 = Convert.ToInt32(Console.ReadLine()); Console.Write(tal2()); ClassUserActivity.inData2 = Convert.ToInt32(Console.ReadLine()); //DisplayMultiplication display.DisplayMultiplication(ClassUserActivity.inData1, ClassUserActivity.inData2); Main(args); break; case Operator.Addition: Console.WriteLine("Case2 - Addition"); Console.WriteLine("Skriv in två heltal."); Console.Write(tal1()); ClassUserActivity.inData1 = Convert.ToInt32(Console.ReadLine()); Console.Write(tal2()); ClassUserActivity.inData2 = Convert.ToInt32(Console.ReadLine()); //DisplayAddition display.DisplayAddition(ClassUserActivity.inData1, ClassUserActivity.inData2); Main(args); break; case Operator.Division: Console.WriteLine("Case3 - Division"); Console.WriteLine("Skriv in två heltal."); Console.Write(tal1()); ClassUserActivity.inData1 = Convert.ToInt32(Console.ReadLine()); Console.Write(tal2()); ClassUserActivity.inData2 = Convert.ToInt32(Console.ReadLine()); //DisplayDivision display.DisplayDiv(ClassUserActivity.inData1, ClassUserActivity.inData2); Main(args); break; case Operator.Substraction: Console.WriteLine("Case4 - Substraktion"); Console.WriteLine("Skriv in två heltal."); Console.Write("Skriv in tal 1: "); ClassUserActivity.inData1 = Convert.ToInt32(Console.ReadLine()); Console.Write("Skriv in tal 2: "); ClassUserActivity.inData2 = Convert.ToInt32(Console.ReadLine()); //DisplaySubstraction display.DisplaySub(ClassUserActivity.inData1, ClassUserActivity.inData2); Main(args); break; case Operator.MultipleAddition: Console.WriteLine("MULTI = Addition - Substraktion, Press Q for menu."); Console.WriteLine(); int uInt; //Do while if readline is not null or "q" do { uInt = 0; ClassUserActivity.inString = Console.ReadLine(); display.DisplayMultipleIncome(ClassUserActivity.inString); } while (uInt != null); break; case Operator.Exit: Console.WriteLine("Du har tryckt noll!"); Environment.Exit(0); break; } Console.ReadKey(); } } //NOTIS!! ----- class UserActivity->MultipleIncome->Function->Display.... Inheritence public class ClassMultipleIncome { protected List<int> MultipleIncomeList = new List<int>(); protected int listSumma; //Add to list protected void AddtoList(int x){ MultipleIncomeList.Add(x); } protected int ShowSum(){ listSumma = MultipleIncomeList.Sum(); return listSumma; } // Loop out the items. protected void ShowAllItemsInList(){ foreach (int value in this.MultipleIncomeList ){ Console.Write(" + {0}",value); } } } public class ClassDisplayCalculator : ClassFunctions{ internal void DisplayAddition(int x, int y){ Console.Write("Svar: {0} + {1} = ", x, y); Console.WriteLine(this.Add(x, y)); Console.ReadLine(); } internal void DisplayDiv(int x, int y){ Console.Write("Svar: {0} / {1} = ", x, y); Console.WriteLine(this.Divide(x, y)); Console.ReadLine(); } internal void DisplaySub(int x, int y){ Console.Write("Svar: {0} - {1} = ", x, y); Console.WriteLine(this.Substract(x, y)); Console.ReadLine(); } internal void DisplayMultiplication(int x, int y){ Console.Write("Svar: {0} * {1} = ", x, y); Console.WriteLine(this.Multiply(x,y)); Console.ReadLine(); } internal void DisplayMultipleIncome(string checkString){ int validInteger; bool ifValidInteger = int.TryParse(checkString, out validInteger); if (ifValidInteger){ Console.Clear(); this.AddtoList(validInteger); Console.WriteLine("*******"); //Show all items in list this.ShowAllItemsInList(); Console.WriteLine(); Console.WriteLine("Total Summa = {0}", this.ShowSum()); Console.Write("Skriv in tal: "); } else if (checkString.Contains("q")){ Console.Clear(); Console.WriteLine("DU HAR VALT ATT AVSLUTA!"); //Main(args); //Program.Main(); } else{ Console.Clear(); Console.WriteLine("Endast siffror!"); } } } }

Uppdaterad kod
Permalänk
Medlem

Jag ser direkt att din division-metod returnerar en int(heltal). Det leder till att decimalerna i resultatet kapas bort och du får ett knasigt svar. Sen kan det vara trevligt att kunna ränkna med decimala tal. Just nu tar dina metoder emot heltal som parametrar.

Permalänk
Medlem
Skrivet av baom:

Jag ser direkt att din division-metod returnerar en int(heltal). Det leder till att decimalerna i resultatet kapas bort och du får ett knasigt svar. Sen kan det vara trevligt att kunna ränkna med decimala tal. Just nu tar dina metoder emot heltal som parametrar.

Ja, jag har haft det i åtanke att jag ska fixa så det är möjligt att inta double input. Men syftar mer till strukturen på console applikationen. Men tack

Permalänk
Datavetare

Finns en del exempel, algoritmer och idéer kring just miniräknare i denna tråd.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

Finns en del exempel, algoritmer och idéer kring just miniräknare i denna tråd.

Oj! Stort tack! Denna var verkligen bra att hitta inspiration!

Permalänk
Medlem

En uppdatering om någon vill se, tipsa gärna!

Gjorde en update, om någon gillar att kolla kod och kommentera. Kommentera gärna!