private bool imajuZajednickoTeme(Grana g, Grana g1) { if (g1.obradjena == false && ((g.izvor == g1.odrediste && g.izvor.bot == true) || (g.odrediste == g1.izvor && g.odrediste.bot == true) || (g.odrediste == g1.odrediste && g.odrediste.bot == true) || (g.izvor == g1.izvor && g.izvor.bot == true))) { return(true); } else { return(false); } }
public void obrisiGranu(Grana grana) { foreach (Cvor c in cvorovi) { for (int i = 0; i < c.grane.Count; i++) { if (c.grane[i].izvor == grana.izvor && c.grane[i].odrediste == grana.odrediste) { c.grane.RemoveAt(i); i--; grane.Remove(grana); return; } } } }
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; }
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(); }
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(); }
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(); }
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); }
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; }