예제 #1
0
 private void button1_Click(object sender, EventArgs e)
 {
     if (praviCvorovi.Count < 2)
     {
         MessageBox.Show("Nacrtano strujno kolo nije pravilno!", "Greska", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
         this.Close();
     }
     if (listBox1.SelectedIndex != -1 && listBox2.SelectedIndex != -1 && listBox1.SelectedIndex != listBox2.SelectedIndex)
     {
         mali.grane.Clear();
         mali.cvorovi.Clear();
         foreach (Grana g in sema.grane)
         {
             g.obradjena = false;
             g.struja    = 0;
         }
         foreach (Cvor c in sema.cvorovi)
         {
             c.bot     = true;
             c.indexer = -2;
             c.napon   = 0;
         }
         izvorIndex     = listBox1.SelectedIndex;
         odredisteIndex = listBox2.SelectedIndex;
         //MessageBox.Show("Moze racuna izmenju " + praviCvorovi[izvorIndex].uString() + praviCvorovi[odredisteIndex].uString());
         Izvor     = praviCvorovi[izvorIndex];
         Odrediste = praviCvorovi[odredisteIndex];
         odrediZBusMatricu();
     }
 }
예제 #2
0
파일: Poteg.cs 프로젝트: opak12/kratkiSpoj
 public void namestiIzvorIOdrediste()
 {
     foreach (Grana g in superGrana)
     {
         if (g.odrediste.bot == false)
         {
             if (izvor == null)
             {
                 izvor = g.odrediste;
             }
             else
             {
                 odrediste = g.odrediste;
             }
         }
         if (g.izvor.bot == false)
         {
             if (izvor == null)
             {
                 izvor = g.izvor;
             }
             else
             {
                 odrediste = g.izvor;
             }
         }
     }
 }
예제 #3
0
파일: Sema.cs 프로젝트: opak12/kratkiSpoj
        public int odrediBrojGrana(Cvor cvor, List <Cvor> cvori)
        {
            int brojGrana = 0;

            foreach (Cvor c in cvori)
            {
                if (c == cvor)
                {
                    foreach (Grana g in c.grane)
                    {
                        if (da_li_pripada(g.odrediste, cvori))
                        {
                            brojGrana++;
                        }
                    }
                }
                else
                {
                    foreach (Grana g in c.grane)
                    {
                        if (g.odrediste == cvor)
                        {
                            brojGrana++;
                        }
                    }
                }
            }
            return(brojGrana);
        }
예제 #4
0
파일: Poteg.cs 프로젝트: opak12/kratkiSpoj
 public Poteg()
 {
     odradjena  = false;
     struja     = 0;
     izvor      = null;
     odrediste  = null;
     admitansa  = 10000000;
     superGrana = new List <Grana>();
 }
예제 #5
0
 public Grana(int id, Cvor i, Cvor o, int ug)
 {
     struja     = 0;
     komponente = new List <Komponenta>();
     izvor      = i;
     odrediste  = o;
     ugao       = ug;
     boja       = Pens.Black;
     grana      = id;
 }
예제 #6
0
 public override void namestiSliku(Cvor izvorni, Cvor odredisni)
 {
     if (frontPolaritet == izvorni)
     {
         slika = slika = rotirajSliku((float)Math.Atan2(odredisni.y - izvorni.y, odredisni.x - izvorni.x) * 57.29577f, Image.FromFile("struja3.png"));
     }
     else if (frontPolaritet == odredisni)
     {
         slika = slika = rotirajSliku((float)Math.Atan2(odredisni.y - izvorni.y, odredisni.x - izvorni.x) * 57.29577f, Image.FromFile("struja1.png"));
     }
 }
예제 #7
0
파일: Sema.cs 프로젝트: opak12/kratkiSpoj
 private bool da_li_pripada(Cvor cvor, List <Cvor> cvori)
 {
     foreach (Cvor c in cvori)
     {
         if (cvor == c)
         {
             return(true);
         }
     }
     return(false);
 }
예제 #8
0
 public FormaGrana(Form1 f, int id, Cvor izvor, Cvor odrediste, Grana preneta_grana)
 {
     formica        = f;
     this.izvor     = izvor;
     this.odrediste = odrediste;
     this.grana     = preneta_grana;
     idgrana        = id;
     if (preneta_grana == null)
     {
         grana = new Grana(id, izvor, odrediste, 0);
         izvor.grane.Add(grana);
     }
     InitializeComponent();
     osveziListbox();
     button1.FlatStyle = FlatStyle.Flat;
     button1.FlatAppearance.BorderColor = Color.DimGray;
 }
예제 #9
0
파일: Sema.cs 프로젝트: opak12/kratkiSpoj
 public void obrisiGraneCvora(Cvor cvor)
 {
     foreach (Cvor c in cvorovi)
     {
         if (c != cvor)
         {
             for (int i = 0; i < c.grane.Count; i++)
             {
                 if (c.grane[i].odrediste == cvor)//brise grane cije je odrediste obrisan cvor;
                 {
                     grane.Remove(c.grane[i]);
                     c.grane.Remove(c.grane[i]);
                     i--;
                 }
             }
         }
     }
     foreach (Grana g in cvor.grane)//brise grane tog cvora;
     {
         grane.Remove(g);
     }
     cvorovi.Remove(cvor);
 }
예제 #10
0
        private void button4_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedIndex != -1)//ako je neka sema selektovana
            {
                //kod za vracanje sledece seme iz baze : select * from sema where sema.id= listaId[listbox1.selectedItem];
                //i onda sema = ucitana sema

                OracleConnection con       = null;
                string           conString = "Data Source = gislab-oracle.elfak.ni.ac.rs:1521/SBP_PDB; User Id = S16171; Password = S16171;";
                int broj = listaId[listBox1.SelectedIndex];

                try
                {
                    sema.Idseme = broj;
                    //otvaramo konekciju ka bazi podataka
                    con = new OracleConnection(conString);
                    con.Open();


                    StringBuilder strSQL = new StringBuilder();

                    strSQL.Append("SELECT CVOR.ID_SEMA,CVOR.ID, CVOR.X, CVOR.Y,CVOR.ZA_CRTANJE ");
                    strSQL.Append(" FROM CVOR ");
                    strSQL.Append(" where ID_SEMA=:broj ");

                    OracleCommand cmd = new OracleCommand(strSQL.ToString(), con);
                    cmd.CommandType = System.Data.CommandType.Text;

                    //kreiramo odgovarajuci parametar
                    OracleParameter paramBroj = new OracleParameter("broj", OracleDbType.Int32);
                    paramBroj.Value = broj;

                    //dodajemo parametar u listu
                    cmd.Parameters.Add(paramBroj);


                    //izvrsavamo komandu i u DataReader prihvatamo informacija o filmovima
                    OracleDataReader dr = cmd.ExecuteReader();

                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            //  brsema = dr.GetInt32(0);
                            int idCvora = dr.GetInt32(1);
                            int korX    = dr.GetInt32(2);
                            int korY    = dr.GetInt32(3);
                            int zaCrtis = dr.GetInt32(4);

                            Cvor k = new Cvor(idCvora, korX, korY);
                            k.zaCrtanje = zaCrtis;
                            // MessageBox.Show(idCvora.ToString() + " " + korX.ToString() + " " + korY.ToString());
                            sema.cvorovi.Add(k);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Clan nema nijedan iznajmljeni film!");
                    }

                    dr.Close();
                }
                catch (Exception ec)
                {
                    MessageBox.Show(ec.Message, "Greska", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //MessageBox.Show("Greska " + ec.Message);
                    Console.WriteLine("Doslo je do greske prilikom pristupanja bazi podataka: " + ec.Message);
                }
                finally
                {
                    if (con != null && con.State == System.Data.ConnectionState.Open)
                    {
                        con.Close();
                    }

                    con = null;
                }


                con       = null;
                conString = "Data Source = gislab-oracle.elfak.ni.ac.rs:1521/SBP_PDB; User Id = S16171; Password = S16171;";

                try
                {
                    //ucitavamo informacije o broju clana
                    // Console.WriteLine("Uneti broj clana za koga se kreira spisak:");
                    //  int broj = Int32.Parse(Console.ReadLine());

                    //otvaramo konekciju ka bazi podataka
                    con = new OracleConnection(conString);
                    con.Open();

                    StringBuilder strSQL = new StringBuilder();

                    strSQL.Append("SELECT GRANA.ID_SEMA, GRANA.ID, GRANA.UGAO,GRANA.IZVOR,GRANA.ODREDISTE ");
                    strSQL.Append(" FROM GRANA ");
                    strSQL.Append(" where ID_SEMA=:broj ");


                    OracleCommand cmd = new OracleCommand(strSQL.ToString(), con);
                    cmd.CommandType = System.Data.CommandType.Text;

                    //kreiramo odgovarajuci parametar
                    OracleParameter paramBroj = new OracleParameter("broj", OracleDbType.Int32);
                    paramBroj.Value = broj;

                    //dodajemo parametar u listu
                    cmd.Parameters.Add(paramBroj);


                    //izvrsavamo komandu i u DataReader prihvatamo informacija o filmovima
                    OracleDataReader dr = cmd.ExecuteReader();

                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            int id_sema       = dr.GetInt32(0);
                            int idGrana       = dr.GetInt32(1);
                            int ugao          = dr.GetInt32(2);
                            int izvorcvor     = dr.GetInt32(3);
                            int odredistecvor = dr.GetInt32(4);
                            //  Debugger.Break();
                            int i1 = -1;
                            int i2 = -1;
                            for (int io = 0; io < sema.cvorovi.Count; io++)
                            {
                                if (sema.cvorovi[io].id == izvorcvor)
                                {
                                    i1 = io;
                                }
                                if (sema.cvorovi[io].id == odredistecvor)
                                {
                                    i2 = io;
                                }
                            }
                            //  Debugger.Break();
                            Grana k = new Grana(idGrana, sema.cvorovi[i1], sema.cvorovi[i2], ugao);
                            sema.cvorovi[i1].grane.Add(k);
                            // Debugger.Break();
                            // MessageBox.Show(idCvora.ToString() + " " + korX.ToString() + " " + korY.ToString());
                            sema.grane.Add(k);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Clan nema nijedan iznajmljeni film!");
                    }

                    dr.Close();
                }
                catch (Exception ec)
                {
                    Console.WriteLine("Doslo je do greske prilikom pristupanja bazi podataka: " + ec.Message);
                }
                finally
                {
                    if (con != null && con.State == System.Data.ConnectionState.Open)
                    {
                        con.Close();
                    }

                    con = null;
                }



                con       = null;
                conString = "Data Source = gislab-oracle.elfak.ni.ac.rs:1521/SBP_PDB; User Id = S16171; Password = S16171;";

                try
                {
                    //otvaramo konekciju ka bazi podataka
                    con = new OracleConnection(conString);
                    con.Open();

                    StringBuilder strSQL = new StringBuilder();

                    strSQL.Append("SELECT KOMPONENTA.ID_SEMA,KOMPONENTA.ID, KOMPONENTA.ID_GRANA, KOMPONENTA.TIP,KOMPONENTA.VELICINA,KOMPONENTA.SMER,KOMPONENTA.NAZIV ");
                    strSQL.Append(" FROM KOMPONENTA ");
                    strSQL.Append(" WHERE KOMPONENTA.ID_SEMA=:broj ");


                    OracleCommand cmd = new OracleCommand(strSQL.ToString(), con);
                    cmd.CommandType = System.Data.CommandType.Text;

                    //kreiramo odgovarajuci parametar
                    OracleParameter paramBroj = new OracleParameter("broj", OracleDbType.Int32);
                    paramBroj.Value = broj;

                    //dodajemo parametar u listu
                    cmd.Parameters.Add(paramBroj);


                    //izvrsavamo komandu i u DataReader prihvatamo informacija o filmovima
                    OracleDataReader dr = cmd.ExecuteReader();

                    if (dr.HasRows)
                    {
                        //Debugger.Break();
                        while (dr.Read())
                        {
                            int    kk           = dr.GetInt32(0);
                            int    idkomponente = dr.GetInt32(1);
                            int    id_grane     = dr.GetInt32(2);
                            int    tipkompone   = dr.GetInt32(3);
                            int    velicina     = dr.GetInt32(4);
                            int    smer         = dr.GetInt32(5);
                            string nazv         = dr.GetString(6);
                            int    pom          = -1;
                            for (int i = 0; i < sema.grane.Count; i++)
                            {
                                if (sema.grane[i].grana == id_grane)
                                {
                                    pom = i;
                                }
                            }

                            //  Debugger.Break();
                            // Komponenta k = new Otpornik(10, "R1");
                            // k.slika = Image.FromFile("opt.png");
                            Komponenta novaKomponenta = null;
                            if (tipkompone == 0)
                            {
                                novaKomponenta    = new NaponskiGenerator(velicina, nazv, true);
                                novaKomponenta.id = idkomponente;
                            }

                            else if (tipkompone == 1)
                            {
                                novaKomponenta    = new StrujniGenerator(velicina, nazv, true);
                                novaKomponenta.id = idkomponente;
                            }
                            else
                            {
                                novaKomponenta    = new Otpornik(velicina, nazv);
                                novaKomponenta.id = idkomponente;
                            }
                            sema.grane[pom].komponente.Add(novaKomponenta);
                            sema.grane[pom].brojkom++;
                            int komp = -1;
                            for (int i = 0; i < sema.grane[pom].komponente.Count; i++)
                            {
                                if (sema.grane[pom].komponente[i].id == idkomponente)
                                {
                                    komp = i;
                                }
                            }
                            if (smer == 0)
                            {
                                sema.grane[pom].komponente[komp].polaritet      = sema.grane[pom].izvor;//ako je 0 prema izvor
                                sema.grane[pom].komponente[komp].frontPolaritet = sema.grane[pom].izvor;
                            }
                            else if (smer == 1)
                            {
                                sema.grane[pom].komponente[komp].polaritet      = sema.grane[pom].odrediste;
                                sema.grane[pom].komponente[komp].frontPolaritet = sema.grane[pom].odrediste;
                            }

                            sema.grane[pom].komponente[komp].namestiSliku(sema.grane[pom].izvor, sema.grane[pom].odrediste);

                            //if(sema.grane[pom].komponente[komp].polaritet==sema.grane[pom].izvor)
                            //    smer=0
                        }
                    }
                    else
                    {
                        Console.WriteLine("Clan nema nijedan iznajmljeni film!");
                    }

                    dr.Close();
                }
                catch (Exception ec)
                {
                    MessageBox.Show(ec.Message, "Greska", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    //MessageBox.Show("Greska " + ec.Message);
                    Console.WriteLine("Doslo je do greske prilikom pristupanja bazi podataka: " + ec.Message);
                }
                finally
                {
                    if (con != null && con.State == System.Data.ConnectionState.Open)
                    {
                        con.Close();
                    }

                    con = null;
                }
                // Debugger.Break();
                // MessageBox.Show("Ucitava se sema " + listBox1.SelectedIndex);
                forma.pomZaEDIT = 1;
            }


            else
            {
                MessageBox.Show("Nije selektovana nijedna sema!", "Greska", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            this.Close();
        }
예제 #11
0
        private void button1_Click(object sender, EventArgs e)
        {
            Random r = new Random();
            int    brojac_za_crtanje = 1;
            int    brcvorova         = (int)numericUpDown1.Value;
            int    crt = 0;

            if (brcvorova == 1)
            {
                crt = 1;
            }
            if (brcvorova == 2 || brcvorova == 3)
            {
                crt = 2;
            }
            if (brcvorova == 4)
            {
                crt = 3;
            }
            int y = 7;

            for (int i = 0; i < 2; i++)
            {
                int x = 12;
                for (int j = 0; j < crt + 1; j++)
                {
                    Cvor c = new Cvor(idBrojac++, x, y);
                    sema.cvorovi.Add(c);
                    c.zaCrtanje = brojac_za_crtanje++;
                    x          += 10;
                }
                y += 13;
            }
            int numNodes = sema.cvorovi.Count;

            for (int i = 0; i < numNodes / 2; i++)
            {
                Grana g = null;
                if (i != (numNodes / 2 - 1))
                {
                    g = new Grana(idGra++, sema.cvorovi[i], sema.cvorovi[i + 1], 0);
                    sema.cvorovi[i].grane.Add(g);
                    sema.grane.Add(g);
                }
            }
            for (int i = numNodes / 2; i < numNodes; i++)
            {
                Grana g = null;
                if (i != (numNodes - 1))
                {
                    g = new Grana(idGra++, sema.cvorovi[i], sema.cvorovi[i + 1], 0);
                    sema.cvorovi[i].grane.Add(g);
                    sema.grane.Add(g);
                }
            }
            for (int i = 0; i < numNodes / 2; i++)
            {
                Grana g = new Grana(idGra++, sema.cvorovi[i], sema.cvorovi[i + numNodes / 2], 0);
                sema.cvorovi[i].grane.Add(g);
                sema.grane.Add(g);
            }
            int rand = r.Next(10);

            if (brcvorova == 3)
            {
                int iz  = 0;
                int odr = 4;
                if (rand < 2)
                {
                    iz  = 0;
                    odr = 4;
                }
                else if (rand < 4)
                {
                    iz  = 1;
                    odr = 3;
                }
                else if (rand < 6)
                {
                    iz  = 1;
                    odr = 5;
                }
                else
                {
                    iz  = 2;
                    odr = 4;
                }
                Grana g = new Grana(idGra++, sema.cvorovi[iz], sema.cvorovi[odr], 0);
                sema.cvorovi[iz].grane.Add(g);
                sema.grane.Add(g);
            }
            if (brcvorova == 4)
            {
                int iz  = 0;
                int odr = 4;
                if (rand < 3)
                {
                    iz  = 1;
                    odr = 6;
                }
                else if (rand < 6)
                {
                    iz  = 2;
                    odr = 5;
                }
                else
                {
                    iz  = -1;
                    odr = -1;
                }
                if (iz != -1 && odr != -1)
                {
                    Grana g = new Grana(idGra++, sema.cvorovi[iz], sema.cvorovi[odr], 0);
                    sema.cvorovi[iz].grane.Add(g);
                    sema.grane.Add(g);
                }
            }
            foreach (Grana g in sema.grane)
            {
                g.obradjena = false;
                g.struja    = 0;
            }
            foreach (Cvor c in sema.cvorovi)
            {
                c.bot     = true;
                c.indexer = -2;
                c.napon   = 0;
            }
            sema.izbaciPipkeIOstrva(new ListBox());
            List <Poteg> potezi = new List <Poteg>();

            potezi = sema.pot;
            int brojacOtp = 1, brojacStrujni = 1, brojacNapon = 1;

            if (potezi.Count == 1)
            {
                if (r.Next(8) == 0)
                {
                    Komponenta k = new StrujniGenerator(r.Next(6) + 1, "J" + brojacStrujni.ToString(), true);
                    brojacStrujni++;
                    if (r.Next(2) == 0)
                    {
                        k.polaritet      = potezi[0].superGrana[0].izvor;
                        k.frontPolaritet = potezi[0].superGrana[0].izvor;
                    }
                    else
                    {
                        k.polaritet      = potezi[0].superGrana[0].odrediste;
                        k.frontPolaritet = potezi[0].superGrana[0].odrediste;
                    }
                    k.namestiSliku(potezi[0].superGrana[0].izvor, potezi[0].superGrana[0].odrediste);
                    potezi[0].superGrana[0].komponente.Add(k);
                    potezi[0].superGrana[0].brojkom++;
                }
                foreach (Grana g in potezi[0].superGrana)
                {
                    if (r.Next(10) != 0)
                    {
                        int koliko = r.Next(10);
                        if (koliko < 7)
                        {
                            koliko = 1;
                        }
                        else
                        {
                            koliko = 2;
                        }
                        for (int i = 0; i < koliko; i++)
                        {
                            int ran = r.Next(100);
                            if (ran < 62)
                            {
                                Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                                k.namestiSliku(g.izvor, g.odrediste);
                                brojacOtp++;
                                g.komponente.Add(k);
                                g.brojkom++;
                            }
                            else
                            {
                                Komponenta k = new NaponskiGenerator(r.Next(10) + 1, "E" + brojacNapon.ToString(), true);
                                brojacNapon++;
                                if (r.Next(2) == 0)
                                {
                                    k.polaritet      = g.izvor;
                                    k.frontPolaritet = g.izvor;
                                }
                                else
                                {
                                    k.polaritet      = g.odrediste;
                                    k.frontPolaritet = g.odrediste;
                                }
                                k.namestiSliku(g.izvor, g.odrediste);
                                g.komponente.Add(k);
                                g.brojkom++;
                            }
                        }
                    }
                }
                this.p.godina = idBrojac;
                this.p.tezina = idGra;
                this.Close();
                return;
            }
            foreach (Poteg p in potezi)
            {
                if (p.superGrana.Count == 1)
                {
                    int koliko = r.Next(10);
                    if (koliko < 7)
                    {
                        koliko = 1;
                    }
                    else
                    {
                        koliko = 2;
                    }
                    for (int i = 0; i < koliko; i++)
                    {
                        int ran = r.Next(100);
                        if (ran < 50)
                        {
                            Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                            k.namestiSliku(p.superGrana[0].izvor, p.superGrana[0].odrediste);
                            brojacOtp++;
                            p.superGrana[0].komponente.Add(k);
                            p.superGrana[0].brojkom++;
                        }
                        else if (ran < 84)
                        {
                            Komponenta k = new NaponskiGenerator(r.Next(10) + 1, "E" + brojacNapon.ToString(), true);
                            brojacNapon++;
                            if (r.Next(2) == 0)
                            {
                                k.polaritet      = p.superGrana[0].izvor;
                                k.frontPolaritet = p.superGrana[0].izvor;
                            }
                            else
                            {
                                k.polaritet      = p.superGrana[0].odrediste;
                                k.frontPolaritet = p.superGrana[0].odrediste;
                            }
                            k.namestiSliku(p.superGrana[0].izvor, p.superGrana[0].odrediste);
                            p.superGrana[0].komponente.Add(k);
                            p.superGrana[0].brojkom++;
                        }
                        else if (p.superGrana[0].isStrujni() == false)
                        {
                            Komponenta k = new StrujniGenerator(r.Next(6) + 1, "J" + brojacStrujni.ToString(), true);
                            brojacStrujni++;
                            if (r.Next(2) == 0)
                            {
                                k.polaritet      = p.superGrana[0].izvor;
                                k.frontPolaritet = p.superGrana[0].izvor;
                            }
                            else
                            {
                                k.polaritet      = p.superGrana[0].odrediste;
                                k.frontPolaritet = p.superGrana[0].odrediste;
                            }
                            k.namestiSliku(p.superGrana[0].izvor, p.superGrana[0].odrediste);
                            p.superGrana[0].komponente.Add(k);
                            p.superGrana[0].brojkom++;
                        }
                    }
                }
                else
                {
                    for (int ee = 0; ee < p.superGrana.Count; ee++)
                    {
                        if (ee == 1)
                        {
                            int koliko = r.Next(10);
                            if (koliko < 7)
                            {
                                koliko = 1;
                            }
                            else
                            {
                                koliko = 2;
                            }
                            for (int i = 0; i < koliko; i++)
                            {
                                int ran = r.Next(100);
                                if (ran < 50)
                                {
                                    Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                                    k.namestiSliku(p.superGrana[1].izvor, p.superGrana[1].odrediste);
                                    brojacOtp++;
                                    p.superGrana[1].komponente.Add(k);
                                    p.superGrana[1].brojkom++;
                                }
                                else if (ran < 84)
                                {
                                    Komponenta k = new NaponskiGenerator(r.Next(10) + 1, "E" + brojacNapon.ToString(), true);
                                    brojacNapon++;
                                    if (r.Next(2) == 0)
                                    {
                                        k.polaritet      = p.superGrana[1].izvor;
                                        k.frontPolaritet = p.superGrana[1].izvor;
                                    }
                                    else
                                    {
                                        k.polaritet      = p.superGrana[1].odrediste;
                                        k.frontPolaritet = p.superGrana[1].odrediste;
                                    }
                                    k.namestiSliku(p.superGrana[1].izvor, p.superGrana[1].odrediste);
                                    p.superGrana[1].komponente.Add(k);
                                    p.superGrana[1].brojkom++;
                                }
                                else if (p.superGrana[1].isStrujni() == false)
                                {
                                    Komponenta k = new StrujniGenerator(r.Next(6) + 1, "J" + brojacStrujni.ToString(), true);
                                    brojacStrujni++;
                                    if (r.Next(2) == 0)
                                    {
                                        k.polaritet      = p.superGrana[1].izvor;
                                        k.frontPolaritet = p.superGrana[1].izvor;
                                    }
                                    else
                                    {
                                        k.polaritet      = p.superGrana[1].odrediste;
                                        k.frontPolaritet = p.superGrana[1].odrediste;
                                    }
                                    k.namestiSliku(p.superGrana[1].izvor, p.superGrana[1].odrediste);
                                    p.superGrana[1].komponente.Add(k);
                                    p.superGrana[1].brojkom++;
                                }
                            }
                        }
                        else
                        {
                            if (r.Next(3) == 0)
                            {
                                Komponenta k = new Otpornik(r.Next(10) + 1, "R" + brojacOtp.ToString());
                                k.namestiSliku(p.superGrana[ee].izvor, p.superGrana[ee].odrediste);
                                brojacOtp++;
                                p.superGrana[ee].komponente.Add(k);
                                p.superGrana[ee].brojkom++;
                            }
                        }
                    }
                }
            }
            this.p.godina = idBrojac;
            this.p.tezina = idGra;
            this.Close();
        }
예제 #12
0
        private void odrediZBusMatricu()
        {
            int brojac = 1;

            sema.izbaciPipkeIOstrva(new ListBox());
            foreach (Cvor c1 in praviCvorovi)
            {
                if (c1 == Izvor)
                {
                    c1.TevenenIndexer = -1;
                }
                else if (c1 == Odrediste)
                {
                    c1.TevenenIndexer = 0;
                }
                else
                {
                    c1.TevenenIndexer = brojac++;
                }
            }
            List <Cvor> tCvorovi = new List <Cvor>();

            foreach (Cvor c1 in praviCvorovi)
            {
                if (c1 == Izvor)
                {
                    tCvorovi.Add(c1);
                }
            }
            foreach (Cvor c1 in praviCvorovi)
            {
                if (c1 == Odrediste)
                {
                    tCvorovi.Add(c1);
                }
            }
            foreach (Cvor c1 in praviCvorovi)
            {
                if (c1 != Izvor && c1 != Odrediste)
                {
                    tCvorovi.Add(c1);
                }
            }
            //IZMENA
            int dimenzija = praviCvorovi.Count - 1;

            decimal[,] matricaAdmitansi = new decimal[dimenzija, dimenzija];
            for (int i = 0; i < dimenzija; i++)
            {
                for (int j = 0; j < dimenzija; j++)
                {
                    matricaAdmitansi[i, j] = 0;
                }
            }
            for (int i = 1; i <= dimenzija; i++)
            {
                foreach (Poteg p in sema.pot)
                {
                    if (p.izvor == tCvorovi[i] || p.odrediste == tCvorovi[i])
                    {
                        matricaAdmitansi[tCvorovi[i].TevenenIndexer, tCvorovi[i].TevenenIndexer] += p.izracunajAdmitansu();
                        if (p.izvor == tCvorovi[i] && p.odrediste.TevenenIndexer != -1)
                        {
                            matricaAdmitansi[tCvorovi[i].TevenenIndexer, p.odrediste.TevenenIndexer] += (-1 * p.izracunajAdmitansu());
                        }
                        if (p.odrediste == tCvorovi[i] && p.izvor.TevenenIndexer != -1)
                        {
                            matricaAdmitansi[tCvorovi[i].TevenenIndexer, p.izvor.TevenenIndexer] += (-1 * p.izracunajAdmitansu());
                        }
                    }
                }
            }
            //IZMENA
            int     n = dimenzija;
            decimal c, h;

            decimal[,] prosirenaMatrica = new decimal[dimenzija + 1, dimenzija + 1];
            decimal[,] pocetnoJedinicna = new decimal[dimenzija + 1, dimenzija + 1];
            for (int i = 0; i <= dimenzija; i++)
            {
                for (int j = 0; j <= dimenzija; j++)
                {
                    if (i == 0 || j == 0)
                    {
                        prosirenaMatrica[i, j] = 0;
                        pocetnoJedinicna[i, j] = 0;
                    }
                    else
                    {
                        prosirenaMatrica[i, j] = matricaAdmitansi[i - 1, j - 1];
                        if (i == j)
                        {
                            pocetnoJedinicna[i, j] = 1;
                        }
                        else
                        {
                            pocetnoJedinicna[i, j] = 0;
                        }
                    }
                }
            }
            for (int k = 1; k <= n; k++)//POCETAK ALGORITMA.
            {
                h = prosirenaMatrica[k, k];
                for (int i = 1; i <= n; i++)
                {
                    pocetnoJedinicna[k, i] = pocetnoJedinicna[k, i] / h;
                    prosirenaMatrica[k, i] = prosirenaMatrica[k, i] / h;
                }

                for (int p = k + 1; p <= n; p++)
                {
                    c = prosirenaMatrica[p, k];
                    for (int j = 1; j <= n; j++)
                    {
                        pocetnoJedinicna[p, j] = pocetnoJedinicna[p, j] - c * pocetnoJedinicna[k, j];
                        prosirenaMatrica[p, j] = prosirenaMatrica[p, j] - c * prosirenaMatrica[k, j];
                    }
                }
            }
            for (int z = 1; z <= n; z++)
            {
                pocetnoJedinicna[n, z] = pocetnoJedinicna[n, z] / prosirenaMatrica[n, n];
            }
            prosirenaMatrica[n, n] = 1;
            for (int k = 0; k <= n - 2; k++)
            {
                for (int s = k + 1; s <= n - 1; s++)
                {
                    c = prosirenaMatrica[n - s, n - k];
                    for (int t = 1; t <= n; t++)
                    {
                        pocetnoJedinicna[n - s, t] = pocetnoJedinicna[n - s, t] - pocetnoJedinicna[n - k, t] * c;
                        prosirenaMatrica[n - s, t] = prosirenaMatrica[n - s, t] - prosirenaMatrica[n - k, t] * c;
                    }
                }//KRAJ ALGORITMA.
            }
            decimal napon = Odrediste.napon - Izvor.napon;

            f.osveziListBoxove();
            Cvor prvi = new Cvor(Odrediste.id, 8, 1);

            prvi.zaCrtanje = Odrediste.zaCrtanje;
            Cvor drugi = new Cvor(Izvor.id, 8, 11);

            drugi.zaCrtanje = Izvor.zaCrtanje;
            mali.cvorovi.Add(prvi);
            mali.cvorovi.Add(drugi);
            Grana      g  = new Grana(66, drugi, prvi, 100);
            Komponenta k2 = new Otpornik(100, "Rt");
            Komponenta k1 = new NaponskiGenerator(100, "Et", true);

            k1.polaritet      = prvi;
            k1.frontPolaritet = prvi;
            k1.namestiSliku(drugi, prvi);
            k2.namestiSliku(drugi, prvi);
            g.komponente.Add(k2);
            g.komponente.Add(k1);
            g.brojkom = 2;
            mali.grane.Add(g);
            Rt = pocetnoJedinicna[1, 1];
            Et = napon;
            pictureBox1.Invalidate();
        }
예제 #13
0
 public override void namestiSliku(Cvor izvorni, Cvor odredisni)
 {
     slika = rotirajSliku((float)Math.Atan2(odredisni.y - izvorni.y, odredisni.x - izvorni.x) * 57.29577f, Image.FromFile("opt6.png"));
 }
예제 #14
0
파일: Sema.cs 프로젝트: opak12/kratkiSpoj
        public void izbaciPipkeIOstrva(ListBox lb)
        {
            pot = new List <Poteg>();
            List <Cvor>  backCvorovi  = new List <Cvor>();
            List <Grana> backGrane    = new List <Grana>();
            List <Cvor>  protoCvorovi = new List <Cvor>();
            List <Grana> protoGrane   = new List <Grana>();

            foreach (Cvor c in cvorovi)
            {
                c.bot = false;
                protoCvorovi.Add(c);
            }
            bool rekurzija = true;

            while (rekurzija)
            {
                rekurzija = false;
                for (int i = 0; i < protoCvorovi.Count; i++)
                {
                    if (odrediBrojGrana(protoCvorovi[i], protoCvorovi) < 2)
                    {
                        rekurzija           = true;
                        protoCvorovi[i].bot = true;
                        lb.Items.Add("Warning : Cvor " + protoCvorovi[i].zaCrtanje + " visi, te se on nece uzeti u obzir pri izracunavanju!");
                        protoCvorovi.RemoveAt(i);
                        i--;
                    }
                }
            }
            foreach (Cvor c in protoCvorovi)
            {
                int brojGrana = odrediBrojGrana(c, protoCvorovi);
                if (brojGrana <= 2)
                {
                    c.bot = true;
                    backCvorovi.Add(c);
                }
                else if (brojGrana > 2)
                {
                    c.bot = false;
                    backCvorovi.Add(c);
                }
            }
            foreach (Grana g in grane)
            {
                if (odrediBrojGrana(g.izvor, protoCvorovi) >= 2 && odrediBrojGrana(g.odrediste, protoCvorovi) >= 2)
                {
                    backGrane.Add(g);
                }
            }
            int brojBackCvorova = 0;
            int brojCvorova     = 0;

            foreach (Cvor c in backCvorovi)
            {
                brojCvorova++;
                if (c.bot == false)
                {
                    brojBackCvorova++;
                }
            }
            if (brojCvorova == 0)
            {
                lb.Items.Add("Error : Greska! Nema Struje, proverite da li je kolo zatvoreno!!!");
                return;
            }
            else if (brojBackCvorova == 0)
            {
                resiKonturu(backGrane, backCvorovi);
                return;
            }
            foreach (Cvor c in backCvorovi)
            {
                if (c.bot == true)
                {
                    foreach (Grana g in backGrane)
                    {
                        if (g.izvor == c || g.odrediste == c)
                        {
                            foreach (Komponenta k in g.komponente)
                            {
                                if ((k.vrsta == Tip.strujniGenerator || k.vrsta == Tip.naponskiGenerator) && k.polaritet == c)
                                {
                                    Grana pomGrana = g;
                                    Cvor  pomCvor  = c;
                                    while (k.polaritet.bot == true)
                                    {
                                        foreach (Grana g1 in backGrane)
                                        {
                                            if ((g1.izvor == pomCvor || g1.odrediste == pomCvor) && g1 != pomGrana)
                                            {
                                                if (g1.izvor != pomCvor)
                                                {
                                                    pomCvor = g1.izvor;
                                                }
                                                else
                                                {
                                                    pomCvor = g1.odrediste;
                                                }
                                                k.polaritet = pomCvor;
                                                pomGrana    = g1;
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            kondenzuj(backCvorovi, backGrane);
        }
예제 #15
0
파일: Sema.cs 프로젝트: opak12/kratkiSpoj
        private void resiKonturu(List <Grana> backGrane, List <Cvor> backCvorovi)
        {
            List <Poteg> lista     = new List <Poteg>();
            Poteg        noviPoteg = new Poteg();

            foreach (Grana g in backGrane)
            {
                noviPoteg.superGrana.Add(g);
            }
            noviPoteg.izvor     = backCvorovi[0];
            backCvorovi[0].bot  = false;
            noviPoteg.odrediste = backCvorovi[0];
            foreach (Grana g in noviPoteg.superGrana)
            {
                foreach (Komponenta k in g.komponente)
                {
                    if (k.vrsta == Tip.strujniGenerator)
                    {
                        noviPoteg.struja = k.velicina;
                        goto dole;
                    }
                }
            }
            decimal eEkv     = 0;
            Cvor    pocCvor  = backCvorovi[0];
            Cvor    tmpCvor  = pocCvor;
            Grana   pocGrana = null;

            foreach (Grana g in backGrane)
            {
                if (g.izvor == pocCvor || g.odrediste == pocCvor)
                {
                    pocGrana = g;
                    break;
                }
            }
            bool  f        = false;
            Grana tmpGrana = pocGrana;

            while (f == false)
            {
                if (tmpGrana.izvor == tmpCvor)
                {
                    foreach (Komponenta k in tmpGrana.komponente)
                    {
                        if (k.vrsta == Tip.naponskiGenerator)
                        {
                            if (k.polaritet == tmpCvor)
                            {
                                eEkv += k.velicina;
                            }
                            else
                            {
                                eEkv -= k.velicina;
                            }
                        }
                    }
                    tmpCvor = tmpGrana.odrediste;
                    if (tmpCvor == pocCvor)
                    {
                        f = true;
                    }
                    foreach (Grana g in backGrane)
                    {
                        if ((g.izvor == tmpCvor || g.odrediste == tmpCvor) && g != tmpGrana)
                        {
                            tmpGrana = g;
                            break;
                        }
                    }
                }
                if (tmpGrana.odrediste == tmpCvor)
                {
                    foreach (Komponenta k in tmpGrana.komponente)
                    {
                        if (k.vrsta == Tip.naponskiGenerator)
                        {
                            if (k.polaritet == tmpCvor)
                            {
                                eEkv += k.velicina;
                            }
                            else
                            {
                                eEkv -= k.velicina;
                            }
                        }
                    }
                    tmpCvor = tmpGrana.izvor;
                    if (tmpCvor == pocCvor)
                    {
                        f = true;
                    }
                    foreach (Grana g in backGrane)
                    {
                        if ((g.izvor == tmpCvor || g.odrediste == tmpCvor) && g != tmpGrana)
                        {
                            tmpGrana = g;
                            break;
                        }
                    }
                }
            }
            noviPoteg.struja = eEkv * noviPoteg.izracunajAdmitansu();
dole:
            foreach (Grana g in noviPoteg.superGrana)
            {
                foreach (Komponenta k in g.komponente)
                {
                    if (k.vrsta == Tip.Otpornik)
                    {
                        k.snaga = noviPoteg.struja * noviPoteg.struja * k.velicina;
                    }
                }
            }
            lista.Add(noviPoteg);
            pot = lista;
        }
예제 #16
0
 public virtual void namestiSliku(Cvor izvorni, Cvor odredisni)
 {
 }