webForumDet fria alternativet

Hjälp med min kalkylator!

.NET

2 svar · 1 138 visningar · startad av Gramas19

Medlem sedan dec. 201250 inlägg
Frågan#1

Hej, jag har gjort en egen liten kalkylator i C# windows form application, det mesta funkar som det ska men det är ett litet problem och en sak jag skulle vilja lägga till i den som inte fungerar.

Problemet är att jag vill kunna räkna restdivision på den också.. alltså % Men när jag testar så funkar det inte (ska visa i koden längre ner) Andra problemet är om jag ska ta t.ex 5 * 2 + 3 så blir svaret 10? Vet inte varför därför om jag tar 10 + 10 + 10 så blir svaret 30. Vill att den ska räkna 5 * 2 (10) + 3 som är 13. Heller inte att den tar 2 + 3 och sen 5 * 5 för det blir fel. Ska visa koden och så får någon hjälpa mig med vad jag har gjort för fel :)

här är en bild på min kalkylator: http://www.webforum.nu/attachment.php?attachmentid=23533&stc=1&d=1359645532

här nere är koden:

namespace Calculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        bool plusButton = false; // detta är för plus (funkar)
        bool minusButton = false; // detta är för minus (funkar)
        bool gangerButton = false; //detta är för gånger (funkar)
        bool divideButton = false; //detta för division (funkar)
        bool restDivision = false; //detta är för restdivisionen (FUNKAR INTE!)

        private void btnOne_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnOne.Text;
        }

        private void btnTwo_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnTwo.Text;
        }

        private void btnThree_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnThree.Text;
        }

        private void btnFour_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnFour.Text;
        }

        private void btnFive_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnFive.Text;
        }

        private void btnSix_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnSix.Text;
        }

        private void btnSeven_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnSeven.Text;
        }

        private void btnEight_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnEight.Text;
        }

        private void btnNine_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnNine.Text;
        }

        private void btnZero_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnZero.Text;
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            txtDisplay.Clear();
        }

        double total1 = 0;
        double total2 = 0;
        private void btnPlus_Click(object sender, EventArgs e)
        {
            total1 = total1 + double.Parse(txtDisplay.Text);
            txtDisplay.Clear();

            plusButton = true;
            minusButton = false;
            gangerButton = false;
            divideButton = false;
            restDivision = false;

        }

        private void btnEquals_Click(object sender, EventArgs e)
        {
            if (plusButton == true)
            {
                total2 = total1 + double.Parse(txtDisplay.Text);
            }
            else if (minusButton == true)
            {
                total2 = total1 - double.Parse(txtDisplay.Text);
            }
            else if (divideButton == true)
            {
                total2 = total1 / double.Parse(txtDisplay.Text);
            }
            else if (gangerButton == true)
            {
                total2 = total1 * double.Parse(txtDisplay.Text);
            }
            else if (restDivision == true)
            {
                total2 = total1 % double.Parse(txtDisplay.Text); //här ska den ta % istället för t.ex + eller * osv så att det blir restdivision. Resten funkar
            }

            txtDisplay.Text = total2.ToString();
            total1 = 0;

        }

        private void btnComma_Click(object sender, EventArgs e)
        {
            txtDisplay.Text = txtDisplay.Text + btnComma.Text;
        }
        private void btnMinus_Click(object sender, EventArgs e)
        {
            total1 = total1 + double.Parse(txtDisplay.Text);
            txtDisplay.Clear();

            plusButton = false;
            minusButton = true;
            gangerButton = false;
            divideButton = false;
            restDivision = false;
        }

        private void btnDivision_Click(object sender, EventArgs e)
        {
            total1 = total1 + double.Parse(txtDisplay.Text);
            txtDisplay.Clear();
            plusButton = false;
            minusButton = false;
            gangerButton = false;
            divideButton = true;
            restDivision = false;
        }

        private void btnGanger_Click(object sender, EventArgs e)
        {
            total1 = total1 + double.Parse(txtDisplay.Text);
            txtDisplay.Clear();
            plusButton = false;
            minusButton = false;
            gangerButton = true;
            divideButton = false;
            restDivision = false;
        }

        private void btnRdivision_Click(object sender, EventArgs e)
        {
            total1 = total1 + double.Parse(txtDisplay.Text);
            txtDisplay.Clear();
            plusButton = false;
            minusButton = false;
            gangerButton = false;
            divideButton = false;
            restDivision = true; //det är här restDivision är sant och ska fungera för den knappen.
        }

        }
    }

Felet är när jag trycker t.ex 10 och sedan på % knappen så händer ingenting. Trycker jag på = tecknet så får jag bara något problem som uppstår så jag måste stänga av kalkylatorn. jag har även testat att trycka först på % och sedan 10 men inget händer. Vad är felet ?

har tagit bort koden till siffrorna så det inte ska blir ALLT för mycket för att läsa. Tacksam för hjälp! :)

kalkylator1.pngkalkylator3.png
Medlem sedan juni 20031 837 inlägg
#2

I kanppmetoderna för -+*/ så börjar du alltid med
total1 = total1 + double.Parse(txtDisplay.Text);

vilket så bara summerar ihop dina värder.
Vad händer om du försöker använda - och /

att du får 10 när du skriver 5 * 2 + 3 beror på att din kod räknar 5 + 2 + 3

Du behöver nog tänka om lite hur du gjort beräkningarna.
Du klickar ju aldrig på = mellan de olika operationerna.

Medlem sedan dec. 201250 inlägg
#3

Tack :) det testade när jag tryckte = mellan varje funktion, tror det räcker egentligen! :)

269 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)