Hallo,
ich habe gestern mit c# begonnen und wollte nun einen Taschenrechner programmieren.
Dieser soll unter anderen die Punkt vor Strich Regel befolgen. Die Logik dazu hätte ich schon...
aber irgentwie ist der index außerhalb des Arrays wenn ich z.B. 6x6 eingebe(ich habe es im Quellcode kommentiert)
Es ist bestimmt nur ein billiger Anfängerfehler aber ich finde ihn einfach nicht
Lg
kiname
ich habe gestern mit c# begonnen und wollte nun einen Taschenrechner programmieren.
Dieser soll unter anderen die Punkt vor Strich Regel befolgen. Die Logik dazu hätte ich schon...
aber irgentwie ist der index außerhalb des Arrays wenn ich z.B. 6x6 eingebe(ich habe es im Quellcode kommentiert)
Es ist bestimmt nur ein billiger Anfängerfehler aber ich finde ihn einfach nicht
Lg
kiname
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;
using System.Collections;
namespace MyCalc
{
public partial class Form1 : Form
{
List<String> op = new List<String>();//liste der rechenoperatoren
List<Double> zahlen = new List<Double>();//liste der zahlen
String s = "";//zwischenspeicher für zahlen
public Form1()
{
InitializeComponent();
}
private void btn_Click(object sender, EventArgs e)//je nachdem welche zahl gedrückt wurde oder komma
{
Button b = (Button)sender;
s += b.Text;
}
private void op_Click(object sender, EventArgs e)//operator und zahl in double wert wird in liste hinzugefügt
{
Button b = (Button)sender;
op.Add(b.Text);
zahlen.Add(Double.Parse(s));
s = "";
}
private void btn_istgleich_Click(object sender, EventArgs e)
{
Double erg = punktVorStrichRechnung();
tb_ausgabe.Text = "" + erg;//ergebnis auf textfeld ausgeben
}
private Double punktVorStrichRechnung()//logik für punkt vor strich rechnung
{
for (int i = 0; i < zahlen.Capacity-1; i++)
{
tb_ausgabe.Text = "" + i;
if (op[i].Equals("*"))
{
zahlen[i + 1] = zahlen[i] * zahlen[i + 1];//<-- fehler bzw bei 6*6 -- die zahl lag außerhalb des bereichs
zahlen.RemoveAt(i);
op.RemoveAt(i);
i--;
}
}
for (int i = 0; i < zahlen.Capacity-1; i++)
{
if (op[i].Equals("/"))
{
zahlen[i + 1] = zahlen[i] / zahlen[i + 1];
zahlen.RemoveAt(i);
op.RemoveAt(i);
i--;
}
}
for (int i = 0; i < zahlen.Capacity-1; i++)
{
if (op[i].Equals("+"))
{
zahlen[i + 1] = zahlen[i] + zahlen[i + 1];
zahlen.RemoveAt(i);
op.RemoveAt(i);
i--;
}
}
for (int i = 0; i < zahlen.Capacity-1; i++)
{
if (op[i].Equals("-"))
{
zahlen[i + 1] = zahlen[i] * zahlen[i - 1];
zahlen.RemoveAt(i);
op.RemoveAt(i);
i--;
}
}
return zahlen[0];
}
}
}