public void kordinatEkle(int plaka, int x, int y) { DSehir sehirBilgileri = ilk; while (sehirBilgileri != null) { if (sehirBilgileri.plaka == plaka) { break; } sehirBilgileri = sehirBilgileri.ileri; } sehirBilgileri.kordinatX = x; sehirBilgileri.kordinatY = y; }
public DSehir GetSehir(int plaka) { DSehir sehirBilgileri = ilk; while (sehirBilgileri != null) { if (sehirBilgileri.plaka == plaka) { break; } sehirBilgileri = sehirBilgileri.ileri; } return(sehirBilgileri); }
public DSehir GetSehir(string sehirAdi) { DSehir sehirBilgileri = ilk; while (sehirBilgileri != null) { if (sehirBilgileri.sehirAdi == sehirAdi) { break; } sehirBilgileri = sehirBilgileri.ileri; } return(sehirBilgileri); }
public int[,] KomsulukMatrisi(SehirManager sehirManager) { DSehir iter = sehirManager.ilk; int main = 0; while (iter != null) { for (int i = 0; i < iter.komsuSayisi; i++) { matris[main, iter.komsular[i].plaka - 1] = iter.komsuMesafe[i]; } main++; iter = iter.ileri; } return(matris); }
public bool sehirEkle(int plaka, string sehirAdi) { try{ DSehir node = new DSehir(plaka, sehirAdi); if (ilk == null) { ilk = node; ilk.ileri = null; son = ilk; } else { son.ileri = node; node.ileri = null; son = node; } return(true); } catch { return(false); } }
public SehirManager() { ilk = null; son = ilk; }
private void TumYollarCiz() { for (int i = 0; i < yol0.Count; i++) { DSehir OncekiSehirBilgisi; if (i == 0) { OncekiSehirBilgisi = sehirManager.GetSehir(41); } else { OncekiSehirBilgisi = sehirManager.GetSehir(yol0[i - 1] + 1); } DSehir sehirBilgisi = sehirManager.GetSehir(yol0[i] + 1); if (tumToplamMesafe[0] == minMesafe) { mesafeListesiForm.listBox1.Items.Add(sehirBilgisi.sehirAdi); HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 1, 0, 0, 0); lDizi[i].Location = new Point(sehirBilgisi.kordinatX - 7, sehirBilgisi.kordinatY - 25); } else { HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 0, 255, 123, 0); //Siyah } } for (int i = 0; i < yol1.Count; i++) { DSehir OncekiSehirBilgisi; if (i == 0) { OncekiSehirBilgisi = sehirManager.GetSehir(41); } else { OncekiSehirBilgisi = sehirManager.GetSehir(yol1[i - 1] + 1); } DSehir sehirBilgisi = sehirManager.GetSehir(yol1[i] + 1); if (tumToplamMesafe[1] == minMesafe) { mesafeListesiForm.listBox1.Items.Add(sehirBilgisi.sehirAdi); HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 1, 0, 0, 0); lDizi[i].Location = new Point(sehirBilgisi.kordinatX - 7, sehirBilgisi.kordinatY - 25); } else { HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 0, 0, 75, 255); //Mavi } } for (int i = 0; i < yol2.Count; i++) { DSehir OncekiSehirBilgisi; if (i == 0) { OncekiSehirBilgisi = sehirManager.GetSehir(41); } else { OncekiSehirBilgisi = sehirManager.GetSehir(yol2[i - 1] + 1); } DSehir sehirBilgisi = sehirManager.GetSehir(yol2[i] + 1); if (tumToplamMesafe[2] == minMesafe) { mesafeListesiForm.listBox1.Items.Add(sehirBilgisi.sehirAdi); HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 1, 0, 0, 0); lDizi[i].Location = new Point(sehirBilgisi.kordinatX - 7, sehirBilgisi.kordinatY - 25); } else { HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 0, 255, 0, 0); //Kırmızı } } for (int i = 0; i < yol3.Count; i++) { DSehir OncekiSehirBilgisi; if (i == 0) { OncekiSehirBilgisi = sehirManager.GetSehir(41); } else { OncekiSehirBilgisi = sehirManager.GetSehir(yol3[i - 1] + 1); } DSehir sehirBilgisi = sehirManager.GetSehir(yol3[i] + 1); if (tumToplamMesafe[3] == minMesafe) { mesafeListesiForm.listBox1.Items.Add(sehirBilgisi.sehirAdi); HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 1, 0, 0, 0); lDizi[i].Location = new Point(sehirBilgisi.kordinatX - 7, sehirBilgisi.kordinatY - 25); } else { HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 0, 255, 0, 238); //Kahverengi } } for (int i = 0; i < yol4.Count; i++) { DSehir OncekiSehirBilgisi; if (i == 0) { OncekiSehirBilgisi = sehirManager.GetSehir(41); } else { OncekiSehirBilgisi = sehirManager.GetSehir(yol4[i - 1] + 1); } DSehir sehirBilgisi = sehirManager.GetSehir(yol4[i] + 1); if (tumToplamMesafe[4] == minMesafe) { mesafeListesiForm.listBox1.Items.Add(sehirBilgisi.sehirAdi); HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 1, 0, 0, 0); lDizi[i].Location = new Point(sehirBilgisi.kordinatX - 7, sehirBilgisi.kordinatY - 25); } else { HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 0, 0, 0, 0); //siyah } } mesafeListesiForm.label2.Text = minMesafe.ToString() + " KM"; mesafeListesiForm.label5.Location = new Point(90, 10); mesafeListesiForm.label5.Text = "Tüm Yollar\nEn Kisa Bilgisi"; mesafeListesiForm.ShowDialog(); }
private void YolCizClick() { mesafeListesiForm.listBox1.Items.Clear(); mesafeListesiForm.label5.Location = new Point(120, 25); mesafeListesiForm.listBox1.Items.Add("Kocaeli"); this.tabControl1.SelectedTab = tabPage5; g.Clear(Color.White); Image harita = Image.FromFile(dosyaManager.Dosya.haritaDosyaYolu); g.DrawImage(harita, 0, 0, 1300, 650); LabelKonumlandir(); if (listBox1.SelectedItem == null) { MessageBox.Show("Yol Seçimi Yapılmadi"); } else { int tempIndex = 0; List <Int32> temp = new List <int>(); if (listBox1.SelectedItem.ToString() == "1.Yol") { temp = yol0; mesafeListesiForm.label5.Text = "1.Yol"; tempIndex = 0; } else if (listBox1.SelectedItem.ToString() == "2.Yol") { mesafeListesiForm.label5.Text = "2.Yol"; temp = yol1; tempIndex = 1; } else if (listBox1.SelectedItem.ToString() == "3.Yol") { mesafeListesiForm.label5.Text = "3.Yol"; temp = yol2; tempIndex = 2; } else if (listBox1.SelectedItem.ToString() == "4.Yol") { mesafeListesiForm.label5.Text = "4.Yol"; temp = yol3; tempIndex = 3; } else if (listBox1.SelectedItem.ToString() == "5.Yol") { mesafeListesiForm.label5.Text = "5.Yol"; temp = yol4; tempIndex = 4; } else if (listBox1.SelectedItem.ToString() == "Tüm Yollar") { TumYollarCiz(); } else { MessageBox.Show("Hatalı Seçim"); } if (listBox1.SelectedItem.ToString() != "Tüm Yollar") { for (int i = 0; i < temp.Count; i++) { DSehir OncekiSehirBilgisi; if (i == 0) { OncekiSehirBilgisi = sehirManager.GetSehir(41); } else { OncekiSehirBilgisi = sehirManager.GetSehir(temp[i - 1] + 1); } DSehir sehirBilgisi = sehirManager.GetSehir(temp[i] + 1); mesafeListesiForm.listBox1.Items.Add(sehirBilgisi.sehirAdi); HaritadaCiz(OncekiSehirBilgisi.kordinatX, OncekiSehirBilgisi.kordinatY, sehirBilgisi.kordinatX, sehirBilgisi.kordinatY, 0, 29, 53, 87); lDizi[i].Location = new Point(sehirBilgisi.kordinatX - 7, sehirBilgisi.kordinatY - 25); } mesafeListesiForm.label2.Text = tumToplamMesafe[tempIndex].ToString() + " KM"; mesafeListesiForm.ShowDialog(); } } }
private void YolBul(List <Int32> arananIndisListesi, int[,] matris, int tur) { int[,] newMatris = new int[81, 81]; for (int i = 0; i < 81; i++) { for (int k = 0; k < 81; k++) { newMatris[i, k] = matris[i, k]; } } List <Int32> arananIndisListesiCopy = new List <int>(); for (int i = 0; i < arananIndisListesi.Count; i++) { arananIndisListesiCopy.Add(arananIndisListesi[i]); } if (tur < 5) { YolBulucu t = new YolBulucu(); t.topluDijikstra(newMatris, 40, arananIndisListesiCopy, 0); richTextBox2.Text += sehirManager.GetSehir(41).sehirAdi + "(" + sehirManager.GetSehir(41).plaka.ToString() + ") "; for (int i = 0; i < t.tamYol.Count; i++) { switch (tur) { case 0: yol0.Add(t.tamYol[i]); break; case 1: yol1.Add(t.tamYol[i]); break; case 2: yol2.Add(t.tamYol[i]); break; case 3: yol3.Add(t.tamYol[i]); break; case 4: yol4.Add(t.tamYol[i]); break; } DSehir OncekiSehirBilgisi; if (i == 0) { OncekiSehirBilgisi = sehirManager.GetSehir(41); } else { OncekiSehirBilgisi = sehirManager.GetSehir(t.tamYol[i - 1] + 1); } DSehir sehirBilgisi = sehirManager.GetSehir(t.tamYol[i] + 1); richTextBox2.Text += " - " + sehirBilgisi.sehirAdi + "(" + sehirBilgisi.plaka.ToString() + ")"; } richTextBox2.Text += "\n----[TOPLAM MESAFE: " + t.toplamMinMesafe.ToString() + "]----\n\n"; tumToplamMesafe.Add(t.toplamMinMesafe); if (t.tamYol.Count >= 5) { BurayaDon: Random random = new Random(); int sayi = random.Next(t.tamYol.Count); for (int i = 0; i < arananListesiIndis.Count; i++) { if (t.tamYol[sayi] == arananListesiIndis[i] || sayi == 0) { goto BurayaDon; } } newMatris[t.tamYol[sayi - 1], t.tamYol[sayi]] = 0; YolBul(arananListesiIndis, newMatris, tur + 1); } } }