Meddelande

Minska
No announcement yet.

Hjälp med min kalkylator!

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Hjälp med min kalkylator!

    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.ph...1&d=1359645532

    här nere är koden:



    Kod:
    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!
    Bifogade filer

  • #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.

    Kommentera


    • #3
      Tack det testade när jag tryckte = mellan varje funktion, tror det räcker egentligen!

      Kommentera

      Working...
      X