private void add_element_to_lighting(ref Phases phases, int i)
 {
     phases.get_phase()[i].get_lighting().Add(new Lighting());   //dodaje do kazdej fazy number_socket/3 obwodow gniazd
     phases.get_phase()[i].get_lighting()[phases.get_phase()[i].get_lighting().Count() - 1].calculate_I();
     Console.WriteLine("dodano obwod oświetleniowy do fazy " + i.ToString());
 }
        private void button1_Click(object sender, EventArgs e)
        {
            int number_socket;
            int number_lighting;

            if (Int32.TryParse(textBox1.Text, out number_socket))       //sprawdzenie poprawnosci wczytanej liczby
            {
                if (Int32.TryParse(textBox2.Text, out number_lighting)) //sprawdzenie poprawnosci wczytanej liczby
                {
                    //tutaj mamy poprawne dane
                    Phases phases = new Phases();
                    for (int i = 0; i < Constants.number_of_phases; i++)
                    {
                        phases.get_phase().Add(new Phase());    //utworzone zostaly 3 fazy, narazie nie mają w srodku nic
                        Console.WriteLine("dodano fazę");
                    }

                    for (int j = 0; j < number_socket / 3; j++)
                    {
                        for (int i = 0; i < Constants.number_of_phases; i++)
                        {
                            //dodaje do kazdej fazy number_socket/3 obwodow gniazd

                            add_element_to_socket(ref phases, i);
                        }
                    }

                    if (number_socket % 3 == 1)
                    {
                        //jesli liczba obw gniazd jest niepodzielna przez 3 i reszta wynosi 1, dodaje jeden obwod do pierwszej fazy

                        add_element_to_socket(ref phases, 0);
                    }
                    if (number_socket % 3 == 2)
                    {
                        //jesli liczba obw gniazd jest niepodzielna przez 3 i reszta wynosi 2, dodaje po 1 obwodzie do 2 pierwszych faz
                        for (int i = 0; i < 2; i++)
                        {
                            add_element_to_socket(ref phases, i);
                        }
                    }
                    //----koniec obwodow gniazdowych, czas na oswietleniowe
                    for (int j = 0; j < number_lighting / 3; j++)
                    {
                        for (int i = 0; i < Constants.number_of_phases; i++)
                        {
                            //dodaje do kazdej fazy number_socket/3 obwodow gniazd

                            add_element_to_lighting(ref phases, i);
                        }
                    }

                    if (number_lighting % 3 == 1)
                    {
                        //jesli liczba obw osw jest niepodzielna przez 3 i reszta wynosi 1, dodaje jeden obwod do 3 fazy

                        add_element_to_lighting(ref phases, 2);
                    }
                    if (number_lighting % 3 == 2)
                    {
                        //jesli liczba obw osw jest niepodzielna przez 3 i reszta wynosi 2, dodaje po 1 obwodzie do 2 ostatnich faz
                        for (int i = 1; i >= 0; i--)
                        {
                            //   phases.get_phase()[i].get_lighting().Add(new Lighting());
                            add_element_to_lighting(ref phases, i);
                        }
                    }
                    //w tym momencie w kazdej fazie mamy odpowiednia ilosc obwodow, taki sposob ich dodawania zapewnia nam odpowiednie
                    //obciazenia na kazdej fazie ( Najwieksza roznica obciazen moze wynies 2.5kW)

                    //oblicz obciazenia na calej fazie
                    for (int i = 0; i < Constants.number_of_phases; i++)
                    {
                        phases.get_phase()[i].set_Ib();
                        phases.get_phase()[i].calculate_x();
                    }
                    //wyswietl obciazenia

                    show_results(ref phases);
                }
                else
                {
                    //obsluga bledu
                    textBox2.Text = "Błędne dane";
                }
            }
            else
            {
                //obsluga bledu
                textBox1.Text = "Błędne dane";
            }
        }
 private void add_element_to_socket(ref Phases phases, int i)    //dodaj element do fazy i oblicz jego I, "i" to indeks fazy
 {
     phases.get_phase()[i].get_socket().Add(new Socket());
     phases.get_phase()[i].get_socket()[phases.get_phase()[i].get_socket().Count() - 1].calculate_I();
     Console.WriteLine("dodano obwod gniazdowy do fazy " + i.ToString());
 }