Frågan 31 jan. 2013 15:19 #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! :)
T The_Hulk Medlem sedan juni 2003 1 837 inlägg 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.
Tack :) det testade när jag tryckte = mellan varje funktion, tror det räcker egentligen! :)