コード例 #1
0
        public void Wykonaj(Konsola usr)
        {
            if (usr == null)
            {
                MessageBox.Show("BlokWeWy: Wykonaj: konsola nie istnieje");
                return;
            }

            if (dzialania == null)
            {
                MessageBox.Show("BlokWeWy: Wykonaj: lista dzialan nie istnieje");
                return;
            }

            frmConsole = usr;
            int temp = -1;

            for (int i = 0; i < dzialania.Count; i++)
            {
                if (dzialania[i].srodekZmienna == true)
                {
                    temp = ZnajdzZmienna(dzialania[i].srodek);
                }

                if (dzialania[i].dzialanie1 == "Wypisz")
                {
                    String tmpString;
                    if (dzialania[i].srodek != null)
                    {
                        tmpString = dzialania[i].srodek.ToString();
                        //najpierw podmien wszystkie zmienne
                        foreach (Zmienna zm in this.listaZmiennych)
                        {
                            if (zm.tablica == false)
                            {
                                tmpString = tmpString.Replace(znacznikZmiennej + zm.nazwa + znacznikZmiennej, zm.wartosc.ToString());
                            }
                        }
                        //nastepnie podmien wszystkie elementy tablic
                        foreach (Zmienna zm in this.listaZmiennych)
                        {
                            if (zm.tablica == true)
                            {
                                if (tmpString.Contains(zm.nazwa + '[') == true)
                                {
                                    //znajdz indexy do odczytania elementu tablicy
                                    int tmpInd1          = tmpString.IndexOf(znacznikZmiennej + zm.nazwa + '[') + 2;
                                    int tmpInd2          = 0;
                                    int tmpNumerElementu = 0;
                                    for (int j = tmpInd1; j < tmpString.Length; j++)
                                    {
                                        //if (tmpString[j] == '[')
                                        //    tmpInd1 = j;

                                        if (tmpString[j] == ']')
                                        {
                                            tmpInd2 = j;
                                            break;
                                        }
                                    }
                                    //odczytaj ktory element tablicy wypisac
                                    if (tmpInd2 - tmpInd1 > 0)
                                    {
                                        tmpNumerElementu = NumerElementuWTablicy(tmpString.Substring(tmpInd1, tmpInd2 - tmpInd1 + 1));
                                    }
                                    //
                                    tmpString = tmpString.Replace(znacznikZmiennej + zm.nazwa + "[" + (tmpNumerElementu + 1).ToString() + "]" + znacznikZmiennej, zm.wartosci[tmpNumerElementu].ToString());
                                }
                            }
                        }
                        frmConsole.richTextBox1.Text += tmpString + '\n';
                    }
                }
                else
                {
                    int     tmpNumerEl = 0;
                    Zmienna tmpZmienna = null;
                    if (dzialania[i].srodekZmienna == true)
                    {
                        temp = ZnajdzZmienna(dzialania[i].srodek.ToString());

                        if (temp < 0)
                        {
                            MessageBox.Show("BlokWeWy: Wykonaj|Czytaj: zmienna " + dzialania[i].srodek + " nie znaleziona");
                            return;
                        }

                        if (temp > listaZmiennych.Count - 1)
                        {
                            MessageBox.Show("BlokWeWy: Wykonaj|Czytaj: zmienna znaleziona poza zakresem listy");
                            return;
                        }

                        tmpZmienna = listaZmiennych[temp];

                        if (tmpZmienna.tablica == true)
                        {
                            tmpNumerEl = NumerElementuWTablicy(dzialania[i].srodek);

                            if (tmpNumerEl < 0)
                            {
                                MessageBox.Show("BlokWeWy: Wykonaj|Czytaj: tmpNumerEl ujemny: " + tmpNumerEl.ToString());
                                return;
                            }
                        }

                        tmpZmienna = null;
                    }

                    if (temp < 0)
                    {
                        MessageBox.Show("BlokWeWy: Wykonaj|Czytaj: zmienna " + dzialania[i].srodek + " nie znaleziona |2|");
                        return;
                    }

                    Czytaj tmpOkno = new Czytaj(listaZmiennych, temp, tmpNumerEl);

                    tmpOkno.label1.Text = "Podaj " + dzialania[i].srodek + ":";

                    if (listaZmiennych[temp].typ == typeof(int))
                    {
                        tmpOkno.maskedTextBox1.Mask = "000000000000000";
                    }
                    else
                    {
                        if (listaZmiennych[temp].typ == typeof(double))
                        {
                            tmpOkno.maskedTextBox1.Mask = "000000000.0000";
                        }
                        else
                        {
                            tmpOkno.maskedTextBox1.Mask = "";
                        }
                    }

                    tmpOkno.ShowDialog();

                    //listaZmiennych[i].wartosc = tmpString.ToString();
                }
            }
        }
コード例 #2
0
ファイル: Bloki.cs プロジェクト: siof/bloczek
        public void DodajNoweZmienne(Dzialanie dzial)
        {
            if (dzial == null)
            {
                MessageBox.Show("Bloki: DodajNoweZmienne|dzialanie: dzial nie istnieje");
                return;
            }

            if (dzial.nowaZmienna == true && dzial.lewa == null)
            {
                MessageBox.Show("Bloki: DodajNoweZmienne|dzialanie: lewa nie istnieje");
                return;
            }

            if (dzial.nowaZmienna == true && SprawdzCzyIstniejeZmienna(dzial.lewa) == false)
            {
                Zmienna temp = new Zmienna();
                dzial.lewa = dzial.lewa.Replace(znacznikZmiennej, "");

                if (dzial.lewa.Contains(' '))
                {
                    dzial.lewa = dzial.lewa.Replace(" ", "");
                }

                temp.nazwa        = dzial.lewa.ToString();
                dzial.nowaZmienna = false;

                if (dzial.lewa.Contains('[') == true && dzial.lewa.Contains(']') == true)
                {
                    temp.tablica = true;
                }

                if (dzial.dodatkowe != null)
                {
                    int    tmpInd1, tmpInd2;
                    String tmpIlEl        = "";
                    int    tmpIlElementow = 0;

                    if (temp.tablica == true)
                    {
                        tmpInd1 = temp.nazwa.IndexOf('[') + 1;
                        tmpInd2 = temp.nazwa.IndexOf(']');
                        tmpIlEl = temp.nazwa.Substring(tmpInd1, tmpInd2 - tmpInd1);

                        try
                        {
                            tmpIlElementow = Convert.ToInt32(tmpIlEl);
                        }
                        catch
                        {
                            MessageBox.Show("Bloki: DodajNoweZmienne|dzialanie: blad konwersji indexu\n index musi byc liczba calkowita");
                            return;
                        }

                        temp.nazwa = temp.nazwa.Remove(tmpInd1 - 1);

                        temp.iloscElTablicy = tmpIlElementow;
                    }

                    switch (dzial.dodatkowe)
                    {
                    case "int":
                        temp.typ = typeof(int);
                        if (temp.tablica == true)
                        {
                            for (int j = 0; j < tmpIlElementow; j++)
                            {
                                temp.wartosci.Add("0");
                            }
                        }
                        else
                        {
                            temp.wartosc = "0";
                        }
                        break;

                    case "double":
                        temp.typ = typeof(double);
                        if (temp.tablica == true)
                        {
                            for (int j = 0; j < tmpIlElementow; j++)
                            {
                                temp.wartosci.Add("0.0");
                            }
                        }
                        else
                        {
                            temp.wartosc = "0.0";
                        }
                        break;

                    case "String":
                        temp.typ = typeof(String);
                        if (temp.tablica == true)
                        {
                            for (int j = 0; j < tmpIlElementow; j++)
                            {
                                temp.wartosci.Add("");
                            }
                        }
                        else
                        {
                            temp.wartosc = "";
                        }
                        break;

                    default:
                        break;
                    }
                }

                if (listaZmiennych != null)
                {
                    listaZmiennych.Add(temp);
                }
                dodaneZmienne.Add(temp);
            }
        }
コード例 #3
0
        public void Wykonaj()
        {
            int tmpNumerEl    = 0;
            int tempIndZnajdz = -1;

            for (int i = 0; i < dzialania.Count; i++)
            {
                int index = ZnajdzZmienna(dzialania[i].lewa);

                if (index < 0)
                {
                    MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie: " + i.ToString() + "\n zmienna: " + dzialania[i].lewa + " nie znaleziona |lewa");
                    return;
                }

                if (index > listaZmiennych.Count - 1)
                {
                    MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie: " + i.ToString() + "\n index poza zakresem listy zmiennych");
                    return;
                }

                Zmienna temp       = listaZmiennych[index];
                Zmienna tempSrodek = null;
                Zmienna tempPrawa  = null;

                if (dzialania[i].srodekZmienna == true)
                {
                    tempIndZnajdz = ZnajdzZmienna(dzialania[i].srodek);

                    if (tempIndZnajdz < 0)
                    {
                        MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie: " + i.ToString() + "\n tempIndZnajdz: " + dzialania[i].srodek + " nie znaleziona |srodek");
                        return;
                    }

                    if (index > listaZmiennych.Count - 1)
                    {
                        MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie: " + i.ToString() + "\n tempIndZnajdz poza zakresem listy zmiennych |srodek");
                        return;
                    }

                    tempSrodek = listaZmiennych[tempIndZnajdz];
                }
                else
                {
                    tempSrodek = null;
                }

                if (dzialania[i].prawaZmienna == true)
                {
                    tempIndZnajdz = ZnajdzZmienna(dzialania[i].prawa);

                    if (tempIndZnajdz < 0)
                    {
                        MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie: " + i.ToString() + "\n tempIndZnajdz: " + dzialania[i].prawa + " nie znaleziona |prawa");
                        return;
                    }

                    if (index > listaZmiennych.Count - 1)
                    {
                        MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie: " + i.ToString() + "\n tempIndZnajdz poza zakresem listy zmiennych |prawa");
                        return;
                    }

                    tempPrawa = listaZmiennych[tempIndZnajdz];
                }
                else
                {
                    tempPrawa = null;
                }

                if (temp.typ == typeof(int))
                {
                    int tmpL = 0;

                    if (dzialania[i].srodekZmienna == true)
                    {
                        try
                        {
                            if (tempSrodek.tablica == true)
                            {
                                tmpNumerEl = NumerElementuWTablicy(dzialania[i].srodek);

                                if (tmpNumerEl > tempSrodek.wartosci.Count - 1)
                                {
                                    MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |srodek\n tmpNumerEl poza zakresem tablicy");
                                    return;
                                }

                                if (tmpNumerEl < 0)
                                {
                                    MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie " + i.ToString() + " |srodek\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                    return;
                                }

                                if (tmpNumerEl <= tempSrodek.iloscElTablicy)
                                {
                                    tmpL = Convert.ToInt32(tempSrodek.wartosci[tmpNumerEl]);
                                }
                            }
                            else
                            {
                                tmpL = Convert.ToInt32(tempSrodek.wartosc);
                            }
                        }
                        catch
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie " + i.ToString() + " |srodek\n Blad konwersji zmiennej/tablicy na int");
                            return;
                        }
                    }
                    else
                    {
                        try
                        {
                            if (dzialania[i].srodek == "")
                            {
                                tmpL = 0;
                            }
                            else
                            {
                                tmpL = Convert.ToInt32(dzialania[i].srodek);
                            }
                        }
                        catch
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie " + i.ToString() + " |srodek\n Blad konwersji na int");
                            return;
                        }
                    }

                    if (dzialania[i].dzialanie2 != null)
                    {
                        try
                        {
                            switch (dzialania[i].dzialanie2)
                            {
                            case "+":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        tmpL += Convert.ToInt32(tempPrawa.wartosci[tmpNumerEl]);
                                    }
                                    else
                                    {
                                        tmpL += Convert.ToInt32(tempPrawa.wartosc);
                                    }
                                }
                                else
                                {
                                    tmpL += Convert.ToInt32(dzialania[i].prawa);
                                }
                                break;

                            case "-":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        tmpL -= Convert.ToInt32(tempPrawa.wartosci[tmpNumerEl]);
                                    }
                                    else
                                    {
                                        tmpL -= Convert.ToInt32(tempPrawa.wartosc);
                                    }
                                }
                                else
                                {
                                    tmpL -= Convert.ToInt32(dzialania[i].prawa);
                                }
                                break;

                            case "*":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        tmpL *= Convert.ToInt32(tempPrawa.wartosci[tmpNumerEl]);
                                    }
                                    else
                                    {
                                        tmpL *= Convert.ToInt32(tempPrawa.wartosc);
                                    }
                                }
                                else
                                {
                                    tmpL *= Convert.ToInt32(dzialania[i].prawa);
                                }
                                break;

                            case "/":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        int tempZeroCheck = Convert.ToInt32(tempPrawa.wartosci[tmpNumerEl]);

                                        if (tempZeroCheck == 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |prawa\n Proba dzielenia przez 0");
                                            return;
                                        }

                                        tmpL /= tempZeroCheck;
                                    }
                                    else
                                    {
                                        int tempZeroCheck = Convert.ToInt32(tempPrawa.wartosc);

                                        if (tempZeroCheck == 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |prawa\n Proba dzielenia przez 0");
                                            return;
                                        }

                                        tmpL /= tempZeroCheck;
                                    }
                                }
                                else
                                {
                                    int tempZeroCheck = Convert.ToInt32(dzialania[i].prawa);

                                    if (tempZeroCheck == 0)
                                    {
                                        MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |prawa\n Proba dzielenia przez 0");
                                        return;
                                    }

                                    tmpL /= tempZeroCheck;
                                }
                                break;
                            }
                        }
                        catch
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie " + i.ToString() + " |prawa\n Blad przy konwersji na int");
                            return;
                        }
                    }

                    if (temp.tablica == true)
                    {
                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].lewa);

                        if (tmpNumerEl > temp.wartosci.Count - 1)
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie: " + i.ToString() + " |lewa\n tmpNumerEl poza zakresem tablicy");
                            return;
                        }

                        if (tmpNumerEl < 0)
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj|int: dzialanie " + i.ToString() + " |lewa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                            return;
                        }

                        temp.wartosci[tmpNumerEl] = tmpL.ToString();
                        tmpNumerEl = 0;
                    }
                    else
                    {
                        temp.wartosc = tmpL.ToString();
                    }

                    continue;
                }

                if (temp.typ == typeof(double))
                {
                    double tmpL = 0.0;

                    try
                    {
                        if (dzialania[i].srodekZmienna == true)
                        {
                            if (tempSrodek.tablica == true)
                            {
                                tmpNumerEl = NumerElementuWTablicy(dzialania[i].srodek);

                                if (tmpNumerEl > tempSrodek.wartosci.Count - 1)
                                {
                                    MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |srodek\n tmpNumerEl poza zakresem tablicy");
                                    return;
                                }

                                if (tmpNumerEl < 0)
                                {
                                    MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie " + i.ToString() + " |srodek\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                    return;
                                }

                                if (tmpNumerEl <= tempSrodek.iloscElTablicy)
                                {
                                    tmpL = Convert.ToDouble(tempSrodek.wartosci[tmpNumerEl]);
                                }
                            }
                            else
                            {
                                tmpL = Convert.ToDouble(tempSrodek.wartosc);
                            }
                        }
                        else
                        {
                            tmpL = Convert.ToDouble(dzialania[i].srodek);
                        }
                    }
                    catch
                    {
                        MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie " + i.ToString() + " |srodek\n Blad konwersji na double");
                        return;
                    }

                    if (dzialania[i].dzialanie2 != null)
                    {
                        try
                        {
                            switch (dzialania[i].dzialanie2)
                            {
                            case "+":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        tmpL += Convert.ToDouble(tempPrawa.wartosci[tmpNumerEl]);
                                    }
                                    else
                                    {
                                        tmpL += Convert.ToDouble(tempPrawa.wartosc);
                                    }
                                }
                                else
                                {
                                    tmpL += Convert.ToDouble(dzialania[i].prawa);
                                }
                                break;

                            case "-":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        tmpL -= Convert.ToDouble(tempPrawa.wartosci[tmpNumerEl]);
                                    }
                                    else
                                    {
                                        tmpL -= Convert.ToDouble(tempPrawa.wartosc);
                                    }
                                }
                                else
                                {
                                    tmpL -= Convert.ToDouble(dzialania[i].prawa);
                                }
                                break;

                            case "*":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        tmpL *= Convert.ToDouble(tempPrawa.wartosci[tmpNumerEl]);
                                    }
                                    else
                                    {
                                        tmpL *= Convert.ToDouble(tempPrawa.wartosc);
                                    }
                                }
                                else
                                {
                                    tmpL *= Convert.ToDouble(dzialania[i].prawa);
                                }
                                break;

                            case "/":
                                if (dzialania[i].prawaZmienna == true)
                                {
                                    if (tempPrawa.tablica == true)
                                    {
                                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                        if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                            return;
                                        }

                                        if (tmpNumerEl < 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                            return;
                                        }

                                        double tempZeroCheck = Convert.ToDouble(tempPrawa.wartosci[tmpNumerEl]);

                                        if (tempZeroCheck == 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |prawa\n Proba dzielenia przez 0");
                                            return;
                                        }

                                        tmpL /= tempZeroCheck;
                                    }
                                    else
                                    {
                                        double tempZeroCheck = Convert.ToDouble(tempPrawa.wartosc);

                                        if (tempZeroCheck == 0)
                                        {
                                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |prawa\n Proba dzielenia przez 0");
                                            return;
                                        }

                                        tmpL /= tempZeroCheck;
                                    }
                                }
                                else
                                {
                                    double tempZeroCheck = Convert.ToDouble(dzialania[i].prawa);

                                    if (tempZeroCheck == 0)
                                    {
                                        MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |prawa\n Proba dzielenia przez 0");
                                        return;
                                    }

                                    tmpL /= tempZeroCheck;
                                }
                                break;
                            }
                        }
                        catch
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj: dzialanie " + i.ToString() + " |prawa\n Blad konwersji na double");
                            return;
                        }
                    }

                    if (temp.tablica == true)
                    {
                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].lewa);

                        if (tmpNumerEl > temp.wartosci.Count - 1)
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie: " + i.ToString() + " |lewa\n tmpNumerEl poza zakresem tablicy");
                            return;
                        }

                        if (tmpNumerEl < 0)
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj|double: dzialanie " + i.ToString() + " |lewa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                            return;
                        }

                        temp.wartosci[tmpNumerEl] = tmpL.ToString();
                        tmpNumerEl = 0;
                    }
                    else
                    {
                        temp.wartosc = tmpL.ToString();
                    }

                    continue;
                }

                if (temp.typ == typeof(String))
                {
                    String tmpL = "";

                    if (dzialania[i].srodekZmienna == true)
                    {
                        if (tempSrodek.tablica == true)
                        {
                            tmpNumerEl = NumerElementuWTablicy(dzialania[i].srodek);

                            if (tmpNumerEl > tempSrodek.wartosci.Count - 1)
                            {
                                MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie: " + i.ToString() + " |srodek\n tmpNumerEl poza zakresem tablicy");
                                return;
                            }

                            if (tmpNumerEl < 0)
                            {
                                MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie " + i.ToString() + " |srodek\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                return;
                            }

                            tmpL = tempSrodek.wartosci[tmpNumerEl].ToString();
                        }
                        else
                        {
                            tmpL = tempSrodek.wartosc.ToString();
                        }
                    }
                    else
                    {
                        tmpL = dzialania[i].srodek.ToString();
                    }

                    if (dzialania[i].dzialanie2 != null)
                    {
                        switch (dzialania[i].dzialanie2)
                        {
                        case "+":
                            if (dzialania[i].prawaZmienna == true)
                            {
                                if (tempPrawa.tablica == true)
                                {
                                    tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                    if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                    {
                                        MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                        return;
                                    }

                                    if (tmpNumerEl < 0)
                                    {
                                        MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                        return;
                                    }

                                    tmpL += tempPrawa.wartosci[tmpNumerEl];
                                }
                                else
                                {
                                    tmpL += tempPrawa.wartosc;
                                }
                            }
                            else
                            {
                                tmpL += dzialania[i].prawa;
                            }
                            break;

                        case "-":
                            if (dzialania[i].prawaZmienna == true)
                            {
                                if (tempPrawa.tablica == true)
                                {
                                    tmpNumerEl = NumerElementuWTablicy(dzialania[i].prawa);

                                    if (tmpNumerEl > tempPrawa.wartosci.Count - 1)
                                    {
                                        MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie: " + i.ToString() + " |prawa\n tmpNumerEl poza zakresem tablicy");
                                        return;
                                    }

                                    if (tmpNumerEl < 0)
                                    {
                                        MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie " + i.ToString() + " |prawa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                        return;
                                    }

                                    tmpL = tmpL.Replace(tempPrawa.wartosci[tmpNumerEl], "");
                                }
                                else
                                {
                                    tmpL = tmpL.Replace(tempPrawa.wartosc, "");
                                }
                            }
                            else
                            {
                                tmpL = tmpL.Replace(dzialania[i].prawa, "");
                            }
                            break;

                        case "*":
                            break;

                        case "/":
                            break;
                        }
                    }

                    if (temp.tablica == true)
                    {
                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].lewa);

                        if (tmpNumerEl > temp.wartosci.Count - 1)
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie: " + i.ToString() + " |lewa\n tmpNumerEl poza zakresem tablicy");
                            return;
                        }

                        if (tmpNumerEl < 0)
                        {
                            MessageBox.Show("BlokObliczeniowy: Wykonaj|String: dzialanie " + i.ToString() + " |lewa\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                            return;
                        }

                        temp.wartosci[tmpNumerEl] = tmpL.ToString();
                    }
                    else
                    {
                        temp.wartosc = tmpL.ToString();
                    }

                    continue;
                }
            }
        }
コード例 #4
0
        public bool Wykonaj()
        {
            if (dzialania == null)
            {
                MessageBox.Show("BlokDecyzyjny: Wykonaj: lista dzialan nie istnieje");
                return(false);
            }

            int     tmpNumerEl    = -1;
            int     tempIndZnajdz = -1;
            bool    aktualnyStan  = false;
            Zmienna tempLewa      = null;
            Zmienna tempPrawa     = null;

            for (int i = 0; i < dzialania.Count; i++)
            {
                bool tymczasowyStan = false;

                tempIndZnajdz = ZnajdzZmienna(dzialania[i].lewa);

                if (tempIndZnajdz < 0)
                {
                    MessageBox.Show("BlokDecyzyjny: Wykonaj: dzialanie " + i.ToString() + "\n zmienna: " + dzialania[i].lewa + " nie znaleziona");
                    return(false);
                }

                tempLewa  = this.listaZmiennych[tempIndZnajdz];
                tempPrawa = null;

                if (dzialania[i].srodekZmienna == true)
                {
                    tempIndZnajdz = ZnajdzZmienna(dzialania[i].srodek);

                    if (tempIndZnajdz < 0)
                    {
                        MessageBox.Show("BlokDecyzyjny: Wykonaj: dzialanie " + i.ToString() + "\n zmienna: " + dzialania[i].lewa + " nie znaleziona |2|");
                        return(false);
                    }

                    tempPrawa = this.listaZmiennych[tempIndZnajdz];
                }

                if (tempLewa.typ == typeof(int))
                {
                    int tmp  = 0;
                    int tmp2 = 0;

                    try
                    {
                        if (tempLewa.tablica == true)
                        {
                            tmpNumerEl = NumerElementuWTablicy(dzialania[i].lewa);

                            if (tmpNumerEl > tempLewa.wartosci.Count - 1)
                            {
                                MessageBox.Show("BlokDecyzyjny: Wykonaj|int: dzialanie " + i.ToString() + "\n tmpNumerEl poza zakresem tablicy");
                                return(false);
                            }

                            if (tmpNumerEl < 0)
                            {
                                MessageBox.Show("BlokDecyzyjny: Wykonaj|int: dzialanie " + i.ToString() + "\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                return(false);
                            }

                            tmp = Convert.ToInt32(tempLewa.wartosci[tmpNumerEl]);
                        }
                        else
                        {
                            tmp = Convert.ToInt32(tempLewa.wartosc);
                        }
                    }
                    catch
                    {
                        MessageBox.Show("BlokDecyzyjny: Wykonaj: dzialanie " + i.ToString() + "\n Blad konwersji na int |lewa");
                        return(false);
                    }

                    try
                    {
                        if (tempPrawa != null)
                        {
                            if (tempPrawa.tablica == true)
                            {
                                tmpNumerEl = NumerElementuWTablicy(dzialania[i].srodek);
                                tmp2       = Convert.ToInt32(tempPrawa.wartosci[tmpNumerEl]);
                            }
                            else
                            {
                                tmp2 = Convert.ToInt32(tempPrawa.wartosc);
                            }
                        }
                        else
                        {
                            tmp2 = Convert.ToInt32(dzialania[i].srodek);
                        }
                    }
                    catch
                    {
                        MessageBox.Show("BlokDecyzyjny: Wykonaj: dzialanie " + i.ToString() + "\n Blad konwersji na int |prawa");
                        return(false);
                    }

                    switch (dzialania[i].dzialanie1)
                    {
                    case "=":
                        if (tmp == tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case ">":
                        if (tmp > tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case "<":
                        if (tmp < tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case ">=":
                        if (tmp >= tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case "<=":
                        if (tmp <= tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case "<>":
                        if (tmp != tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;
                    }
                }

                if (tempLewa.typ == typeof(double))
                {
                    double tmp  = 0;
                    double tmp2 = 0;

                    try
                    {
                        if (tempLewa.tablica == true)
                        {
                            tmpNumerEl = NumerElementuWTablicy(dzialania[i].lewa);

                            if (tmpNumerEl > tempLewa.wartosci.Count - 1)
                            {
                                MessageBox.Show("BlokDecyzyjny: Wykonaj|double: dzialanie " + i.ToString() + "\n tmpNumerEl poza zakresem tablicy");
                                return(false);
                            }

                            if (tmpNumerEl < 0)
                            {
                                MessageBox.Show("BlokDecyzyjny: Wykonaj|double: dzialanie " + i.ToString() + "\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                return(false);
                            }

                            tmp = Convert.ToDouble(tempLewa.wartosci[tmpNumerEl]);
                        }
                        else
                        {
                            tmp = Convert.ToDouble(tempLewa.wartosc);
                        }
                    }
                    catch
                    {
                        MessageBox.Show("BlokDecyzyjny: Wykonaj: dzialanie " + i.ToString() + "\n Blad konwersji na double |lewa");
                        return(false);
                    }

                    try
                    {
                        if (tempPrawa != null)
                        {
                            if (tempPrawa.tablica == true)
                            {
                                tmpNumerEl = NumerElementuWTablicy(dzialania[i].srodek);

                                if (tmpNumerEl > tempLewa.wartosci.Count - 1)
                                {
                                    MessageBox.Show("BlokDecyzyjny: Wykonaj|double: dzialanie " + i.ToString() + "\n tmpNumerEl poza zakresem tablicy");
                                    return(false);
                                }

                                if (tmpNumerEl < 0)
                                {
                                    MessageBox.Show("BlokDecyzyjny: Wykonaj|double: dzialanie " + i.ToString() + "\n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                    return(false);
                                }

                                tmp2 = Convert.ToDouble(tempPrawa.wartosci[tmpNumerEl]);
                            }
                            else
                            {
                                tmp2 = Convert.ToDouble(tempPrawa.wartosc);
                            }
                        }
                        else
                        {
                            tmp2 = Convert.ToDouble(dzialania[i].srodek);
                        }
                    }
                    catch
                    {
                        MessageBox.Show("BlokDecyzyjny: Wykonaj: dzialanie " + i.ToString() + "/n Blad konwersji na double |prawa");
                        return(false);
                    }

                    switch (dzialania[i].dzialanie1)
                    {
                    case "=":
                        if (tmp == tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case ">":
                        if (tmp > tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case "<":
                        if (tmp < tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case ">=":
                        if (tmp >= tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case "<=":
                        if (tmp <= tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case "<>":
                        if (tmp != tmp2)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;
                    }
                }

                if (tempLewa.typ == typeof(String))
                {
                    String tmp  = "";
                    String tmp2 = "";

                    if (tempLewa.tablica == true)
                    {
                        tmpNumerEl = NumerElementuWTablicy(dzialania[i].lewa);

                        if (tmpNumerEl > tempLewa.wartosci.Count - 1)
                        {
                            MessageBox.Show("BlokDecyzyjny: Wykonaj|String: dzialanie " + i.ToString() + "/n tmpNumerEl poza zakresem tablicy");
                            return(false);
                        }

                        if (tmpNumerEl < 0)
                        {
                            MessageBox.Show("BlokDecyzyjny: Wykonaj|String: dzialanie " + i.ToString() + "/n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                            return(false);
                        }

                        tmp = tempLewa.wartosci[tmpNumerEl].ToString();
                    }
                    else
                    {
                        tmp = tempLewa.wartosc.ToString();
                    }

                    if (tempPrawa != null)
                    {
                        if (tempPrawa.tablica == true)
                        {
                            tmpNumerEl = NumerElementuWTablicy(dzialania[i].srodek);

                            if (tmpNumerEl > tempLewa.wartosci.Count - 1)
                            {
                                MessageBox.Show("BlokDecyzyjny: Wykonaj|String: dzialanie " + i.ToString() + "/n tmpNumerEl poza zakresem tablicy");
                                return(false);
                            }

                            if (tmpNumerEl < 0)
                            {
                                MessageBox.Show("BlokDecyzyjny: Wykonaj|String: dzialanie " + i.ToString() + "/n tmpNumerEl ujemny:" + tmpNumerEl.ToString());
                                return(false);
                            }

                            tmp2 = tempPrawa.wartosci[tmpNumerEl].ToString();
                        }
                        else
                        {
                            tmp2 = tempPrawa.wartosc.ToString();
                        }
                    }
                    else
                    {
                        tmp2 = dzialania[i].srodek.ToString();
                    }

                    switch (dzialania[i].dzialanie1)
                    {
                    case "=":
                        if (tmp.Equals(tmp2) == true)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    case "<>":
                        if (tmp.Equals(tmp2) == false)
                        {
                            tymczasowyStan = true;
                        }
                        else
                        {
                            tymczasowyStan = false;
                        }
                        break;

                    default:
                        tymczasowyStan = false;
                        break;
                    }
                }

                if (dzialania[i].dodatkowe != null)
                {
                    switch (dzialania[i].dodatkowe)
                    {
                    case "AND":
                        if (aktualnyStan == true && tymczasowyStan == true)
                        {
                            aktualnyStan = true;
                        }
                        else
                        {
                            aktualnyStan = false;
                        }
                        break;

                    case "OR":
                        if (aktualnyStan == false && tymczasowyStan == false)
                        {
                            aktualnyStan = false;
                        }
                        else
                        {
                            aktualnyStan = true;
                        }
                        break;

                    default:
                        aktualnyStan = tymczasowyStan;
                        break;
                    }
                }
                else
                {
                    aktualnyStan = tymczasowyStan;
                }
            }

            return(aktualnyStan);
        }