Ostatni i przedostatni wynik w kalkulatorze

0

Tutaj mój kod kalkulatora

https://pastebin.pl/view/d27ea11d
Jak napisać metody zwracające ostatni i przedostatni wynik?

using System;
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using System.Text;
 
namespace NowyE
{
    class Kalkulator
    {
 
        public static void licz()
 
        {
            bool endApp = true;
            while(endApp)
            {
                Console.WriteLine("Calculator\r");
 
                Console.WriteLine("Wybierz rodzaj działania:");
                Console.WriteLine("\ta - addition");
                Console.WriteLine("\tb - substraction");
                Console.WriteLine("\tc - multiplication");
                Console.WriteLine("\td - division");
                Console.WriteLine("\te - show last results");
                Console.WriteLine("\tf - show penultimate results");
                Console.WriteLine("\tx - exit");
 
 
                double num1;
                double num2;
                double x;
 
                switch (Console.ReadLine())
                {
                    case "a":
                        Console.WriteLine("Write number");
                        num1 = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("+");
                        num2 = Convert.ToDouble(Console.ReadLine());
                        x = num1 + num2;
                        Console.WriteLine(x);                      
                        break;
 
                    case "b":
                        Console.WriteLine("Write number");
                        num1 = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("-");
                        num2 = Convert.ToDouble(Console.ReadLine());
                        x = num1 - num2;
                        Console.WriteLine(x);
                        break;
 
                    case "c":
                        Console.WriteLine("Write number");
                        num1 = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("*");
                        num2 = Convert.ToDouble(Console.ReadLine());
                        x = num1 * num2;
                        Console.WriteLine(x);
                        break;
 
                    case "d":
                        Console.WriteLine("Write number");
                        num1 = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("/");
                        num2 = Convert.ToDouble(Console.ReadLine());
                        while (num2 == 0)
                        {
                            Console.WriteLine("Error, you write 0");
                            num2 = Convert.ToInt32(Console.ReadLine());
                        }
                        x = num1 / num2;
                        Console.WriteLine(x);
                        break;
 
                    case "e":
                       
                        break;
 
                    case "f":
 
                        break;
 
                    case "x":
                        endApp = false;
                        break;
                }  
                Console.Write("Press any key");
                Console.ReadKey();
            }    
        }
    }
}
2

Po kodzie stwierdzam, że dopiero zaczynasz :) dlatego podrzucę kilka wskazówek, które pozwolą Ci osiągnać zamierzony cel w prosty sposób

double num1;
double num2;
double x;

Nie nazywaj zmiennych "x", "y", "z" itp., nazwa zmiennej powinna jednoznacznie określać co się w niej znajduje, bez większego główkowania

Jak napisać metody zwracające ostatni i przedostatni wynik?

Nigdzie w pamięci nie przechowujesz wykonywanych operacji, zwracasz tylko ostatni wynik, który jest przechowywany w "x".
Zadeklaruj sobie listę, na którą będziesz wrzucał wykonywane operacje.

List<double> calculationResults = new List<double>();

Ostatni wynik - skorzystaj z operatora Linq - Last()

calculationResults.Last()

Przedostatni wynik - [ilość elementów na liście - 2]
"-2" dlatego, że elementy są numerowane od 0

calculationResults[calculationResults.Count - 2]

Pamiętaj, że musisz zabezpieczyć kod na wypadek, gdyby na liście znalazł się tylko jeden wynik - inaczej w przypdaku próby pobrania przedostatniego elementu będzie błąd :)

0

Masz rację, jestem początkujący.
W kodzie próbowałem już z listą tzn. tak jak napisałeś stworzyłem listę
List<double> calcResults = new List<double>(); zmienną double x , zmieniem na double result
i dodałem do niej wynik działania, tylko po break w liście calcResults nie zapisuje się zmienna. Czy w odpowiednim miejscu dodaje do listy? Wrzucam na razie jeden case dotyczący dodawania.

case "a":
                        Console.WriteLine("Write number");
                        num1 = Convert.ToDouble(Console.ReadLine());
                        Console.WriteLine("+");
                        num2 = Convert.ToDouble(Console.ReadLine());
                        result = num1 + num2;
                        calcResults.Add(result);
                        Console.WriteLine(result);
                        break;

1 użytkowników online, w tym zalogowanych: 0, gości: 1