Witam.
Piszę swój pierwszy kalkulator korzystając z różnych źródeł i już jakoś tam działa lecz napotkałem następujące problemy w moim kodzie i projekcie.
Mianowicie nie wiem jakby teraz zrobić, żeby można było w tym kalkulatorze wykonywać w jednym działaniu więcej niż 2 operacje. Teraz wychodzą jakieś dziwne rzeczy, bo gdy daję 5*5
i wychodzi 25
i kolejny raz dam *5
to zamiast 125
wychodzi 275
.
Drugą sprawą jest, że nie wiem jak zaprogramować i zaimplementować tutaj żebym mógł działania z przecinkami liczyć.
Załączam kod i link do pobrania projektu:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CalculatorFinal
{
public partial class Kalkulator : Form
{
public Kalkulator()
{
InitializeComponent();
}
string FirstNumber, SecondNumber;
char Sign = ' ';
private void tbResult_TextChanged(object sender, EventArgs e)
{
}
private void bC_Click(object sender, EventArgs e)
{
}
private void bCE_Click(object sender, EventArgs e)
{
Sign = ' ';
FirstNumber = String.Empty;
SecondNumber = String.Empty;
tbResult.Text = String.Empty;
}
private void bEquals_Click(object sender, EventArgs e)
{
switch (Sign)
{
case ('+'):
tbResult.Text = (int.Parse(FirstNumber) + int.Parse(SecondNumber)).ToString();
break;
case ('-'):
tbResult.Text = (int.Parse(FirstNumber) - int.Parse(SecondNumber)).ToString();
break;
case ('*'):
tbResult.Text = (int.Parse(FirstNumber) * int.Parse(SecondNumber)).ToString();
break;
case ('/'):
tbResult.Text = (int.Parse(FirstNumber) / int.Parse(SecondNumber)).ToString();
break;
}
}
private void bAdding_Click(object sender, EventArgs e)
{
Sign = '+';
tbResult.Text = "";
}
private void bDot_Click(object sender, EventArgs e)
{
}
private void b0_Click(object sender, EventArgs e)
{
Operation (0);
}
private void b3_Click(object sender, EventArgs e)
{
Operation (3);
}
private void bSubtraction_Click(object sender, EventArgs e)
{
Sign = '-';
tbResult.Text = "";
}
private void b2_Click(object sender, EventArgs e)
{
Operation(2);
}
private void b1_Click(object sender, EventArgs e)
{
Operation(1);
}
private void b6_Click(object sender, EventArgs e)
{
Operation(6);
}
private void bMultiplication_Click(object sender, EventArgs e)
{
Sign = '*';
tbResult.Text = "";
}
private void b5_Click(object sender, EventArgs e)
{
Operation(5);
}
private void b4_Click(object sender, EventArgs e)
{
Operation(4);
}
private void b9_Click(object sender, EventArgs e)
{
Operation(9);
}
private void bDivision_Click(object sender, EventArgs e)
{
Sign = '/';
tbResult.Text = "";
}
private void b8_Click(object sender, EventArgs e)
{
Operation(8);
}
private void b7_Click(object sender, EventArgs e)
{
Operation(7);
}
private void bBackSpace_Click(object sender, EventArgs e)
{
if (Sign == ' ' && FirstNumber.Length > 0)
{
FirstNumber = FirstNumber.Remove(FirstNumber.Length - 1);
tbResult.Text = FirstNumber;
}
else if (Sign != ' ' && SecondNumber.Length > 0)
{
SecondNumber = SecondNumber.Remove(SecondNumber.Length - 1);
tbResult.Text = SecondNumber;
}
}
private void Operation(int number)
{
if (Sign == ' ')
{
FirstNumber += number;
tbResult.Text = FirstNumber;
}
else
{
SecondNumber += number;
tbResult.Text = SecondNumber;
}
}
}
}