Hallo beste lezers.
Ik ben jamilio en ik ben 16 jaar en krijg nu al 11 weken les op de opleiding gamedevelopment.
Een paar weken geleden had ik een opdracht van mijn leraar om een simpele rekenmachine te bouwen met een button om te clearen, plus, min, keer, deel, =, en natuurlijk de nummers 0t/m9. Dit is mij gelukt in een zeer korte tijd met gebruik van try/catch en if statements.
Bij mijn eerste versie had nog wat bugs en liep vast zodra ik bijvoorbeeld 2x2x2 of 1+2x3 intypte. Deze bug heb ik gefixt. zodra er een 2e operator bijkomt dat hij dan een error geeft van: "deze rekenmachine kent geen rekenregels" en dan als je op OK drukte cleart hij automatisch alle variabelen en text velden.
Nu loop ik tegen het probleem aan dat ik een rekenmachine wil maken die volgens de rekenregels rekent alleen heb ik geen idee hoe ik dat zou moeten doen. wat ik bijvoorbeeld wil dat mijn rekenmachine in 1 keer kan uitrekenen is dit: 1+3x5+√9. Hier zou 19 moeten uitkomen. dan zou je in een textbox de som kunnen invullen en zodra je op = button drukt dat hij dan eerst wortels en machten uitrekent en dan keer en deel en daarna plus en min. Op mijn android telefoon heb ik een calculator app die dit wel doet en de calculator van google ook. Maar windows calculator ondersteunt dit weer niet. Dit moet op 1 of andere manier mogelijk zijn maar ik kom er niet uit hoe. Weet iemand mij misschien op weg te helpen?
Hieronder is de code van de rekenmachine die ik nu op het moment heb en werkt
alvast bedankt
Ik ben jamilio en ik ben 16 jaar en krijg nu al 11 weken les op de opleiding gamedevelopment.
Een paar weken geleden had ik een opdracht van mijn leraar om een simpele rekenmachine te bouwen met een button om te clearen, plus, min, keer, deel, =, en natuurlijk de nummers 0t/m9. Dit is mij gelukt in een zeer korte tijd met gebruik van try/catch en if statements.
Bij mijn eerste versie had nog wat bugs en liep vast zodra ik bijvoorbeeld 2x2x2 of 1+2x3 intypte. Deze bug heb ik gefixt. zodra er een 2e operator bijkomt dat hij dan een error geeft van: "deze rekenmachine kent geen rekenregels" en dan als je op OK drukte cleart hij automatisch alle variabelen en text velden.
Nu loop ik tegen het probleem aan dat ik een rekenmachine wil maken die volgens de rekenregels rekent alleen heb ik geen idee hoe ik dat zou moeten doen. wat ik bijvoorbeeld wil dat mijn rekenmachine in 1 keer kan uitrekenen is dit: 1+3x5+√9. Hier zou 19 moeten uitkomen. dan zou je in een textbox de som kunnen invullen en zodra je op = button drukt dat hij dan eerst wortels en machten uitrekent en dan keer en deel en daarna plus en min. Op mijn android telefoon heb ik een calculator app die dit wel doet en de calculator van google ook. Maar windows calculator ondersteunt dit weer niet. Dit moet op 1 of andere manier mogelijk zijn maar ik kom er niet uit hoe. Weet iemand mij misschien op weg te helpen?
Hieronder is de code van de rekenmachine die ik nu op het moment heb en werkt
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
double total1 = 0;
double total2 = 0;
double total3 = 0;
string buffer = "";
string check = "";
private void btnClear_Click(object sender, EventArgs e)
{
txtDisplay.Clear();
txtDisplay2.Clear();
total1 = 0;
total2 = 0;
total3 = 0;
buffer = "";
check = "";
}
private void btn1_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn1.Text;
}
private void btn2_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn2.Text;
}
private void btn3_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn3.Text;
}
private void btn4_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn4.Text;
}
private void btn5_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn5.Text;
}
private void btn6_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn6.Text;
}
private void btn7_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn7.Text;
}
private void btn8_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn8.Text;
}
private void btn9_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn9.Text;
}
private void btn0_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btn0.Text;
}
private void btnReken_Click(object sender, EventArgs e)
{
txtDisplay2.Clear();
try
{
switch (buffer)
{
case "+": total2 = Convert.ToDouble(txtDisplay.Text);
total3 = total1 + total2;
txtDisplay.Text = total3.ToString();
buffer = "";
check = "";
break;
case "-": total2 = Convert.ToDouble(txtDisplay.Text);
total3 = total1 - total2;
txtDisplay.Text = total3.ToString();
buffer = "";
check = "";
break;
case "*": total2 = Convert.ToDouble(txtDisplay.Text);
total3 = total1 * total2;
txtDisplay.Text = total3.ToString();
buffer = "";
check = "";
break;
case "/": total2 = Convert.ToDouble(txtDisplay.Text);
total3 = total1 / total2;
txtDisplay.Text = total3.ToString();
buffer = "";
check = "";
break;
case "wortel": total3 = Math.Sqrt(total1);
txtDisplay.Text = total3.ToString();
buffer = "";
check = "";
break;
case "macht": total2 = Convert.ToDouble(txtDisplay.Text);
total3 = Math.Pow(total1, total2);
txtDisplay.Text = total3.ToString();
buffer = "";
check = "";
break;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Er is iets fout gegaan");
}
}
private void btnPunt_Click(object sender, EventArgs e)
{
txtDisplay.Text = txtDisplay.Text + btnPunt.Text;
}
private void btnSluit_Click(object sender, EventArgs e)
{
MessageBox.Show("Gemaakt door Jamilio. Klik op OK om af te sluiten", "Afsluiten");
Close();
}
private void btnPlus_Click(object sender, EventArgs e)
{
if ((buffer == "-") || (buffer == "*") || (buffer == "/") || (check == "plus") || (buffer == "wortel") || (buffer == "macht"))
{
MessageBox.Show("Deze rekenmachine kent geen rekenregels", "Probeer opnieuw");
txtDisplay2.Clear();
txtDisplay.Clear();
buffer = "";
check = "";
}
else if (txtDisplay.Text != "")
{
txtDisplay2.Text += txtDisplay.Text;
txtDisplay2.Text += "+";
total1 = Convert.ToDouble(txtDisplay.Text);
buffer = "+";
check = "plus";
txtDisplay.Clear();
}
}
private void btnMin_Click(object sender, EventArgs e)
{
if ((buffer == "+") || (buffer == "*") || (buffer == "/") || (check == "min") || (buffer == "wortel") || (buffer == "macht"))
{
MessageBox.Show("Deze rekenmachine kent geen rekenregels", "Probeer opnieuw");
txtDisplay2.Clear();
txtDisplay.Clear();
buffer = "";
check = "";
}
else if (txtDisplay.Text != "")
{
txtDisplay2.Text += txtDisplay.Text;
txtDisplay2.Text += "-";
total1 = Convert.ToDouble(txtDisplay.Text);
buffer = "-";
check = "min";
txtDisplay.Clear();
}
}
private void btnKeer_Click(object sender, EventArgs e)
{
if ((buffer == "-") || (buffer == "+") || (buffer == "/") || (check == "keer") || (buffer == "wortel") || (buffer == "macht"))
{
MessageBox.Show("Deze rekenmachine kent geen rekenregels", "Probeer opnieuw");
txtDisplay2.Clear();
txtDisplay.Clear();
buffer = "";
check = "";
}
else if (txtDisplay.Text != "")
{
txtDisplay2.Text += txtDisplay.Text;
txtDisplay2.Text += "x";
total1 = Convert.ToDouble(txtDisplay.Text);
buffer = "*";
check = "keer";
txtDisplay.Clear();
}
}
private void btnDeel_Click(object sender, EventArgs e)
{
if ((buffer == "*") || (buffer == "+") || (buffer == "-") || (check == "deel") || (buffer == "wortel") || (buffer == "macht"))
{
MessageBox.Show("Deze rekenmachine kent geen rekenregels", "Probeer opnieuw");
txtDisplay2.Clear();
txtDisplay.Clear();
buffer = "";
check = "";
}
else if (txtDisplay.Text != "")
{
txtDisplay2.Text += txtDisplay.Text;
txtDisplay2.Text += ":";
total1 = Convert.ToDouble(txtDisplay.Text);
buffer = "/";
check = "deel";
txtDisplay.Clear();
}
}
private void btnWortel_Click(object sender, EventArgs e)
{
if ((buffer == "*") || (buffer == "+") || (buffer == "-") || (check == "wortel") || (buffer == "/") || (buffer == "macht"))
{
MessageBox.Show("Deze rekenmachine kent geen rekenregels", "Probeer opnieuw");
txtDisplay2.Clear();
txtDisplay.Clear();
buffer = "";
check = "";
}
else if (txtDisplay.Text != "")
{
txtDisplay2.Text += txtDisplay.Text;
txtDisplay2.Text += "√";
total1 = Convert.ToDouble(txtDisplay.Text);
buffer = "wortel";
check = "wortel";
txtDisplay.Clear();
}
}
private void pi_Click(object sender, EventArgs e)
{
if (total1 != 0)
{
total2 = 3.14159265;
txtDisplay.Text += "Ï€";
}
else if (total2 == 0)
{
total1 = 3.14159265;
}
}
private void btnMacht_Click(object sender, EventArgs e)
{
if ((buffer == "-") || (buffer == "+") || (buffer == "/") || (check == "macht") || (buffer == "wortel") || (buffer == "*"))
{
MessageBox.Show("Deze rekenmachine kent geen rekenregels", "Probeer opnieuw");
txtDisplay2.Clear();
txtDisplay.Clear();
buffer = "";
check = "";
}
else if (txtDisplay.Text != "")
{
txtDisplay2.Text += txtDisplay.Text;
txtDisplay2.Text += "^";
total1 = Convert.ToDouble(txtDisplay.Text);
buffer = "macht";
check = "macht";
txtDisplay.Clear();
}
}
}
}
alvast bedankt