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 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 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(); }