/// <summary> /// Načítání vrcholů ze souboru, vynechání hlavičky souboru. Hlavicka může zůstat. /// </summary> /// <param name="cesta">Cesta k souboru.</param> /// <returns>List Vrcholů.</returns> public List <DataVrcholu> NactiDataVrcholuZCsv(String cesta) { List <DataVrcholu> vysledek = new List <DataVrcholu>(); List <string[]> objekt = editorCSV.NactiSoubor(cesta); //ukladani poradi radku do int, aby se pak dala vynechat hlavicka souboru Cesty int poradiRadku = 0; foreach (string[] radek in objekt) { poradiRadku++; if (poradiRadku == 1) { continue; } DataVrcholu v = new DataVrcholu(); v.NazevVrcholu = radek[0]; v.XSouradniceVrcholu = float.Parse(radek[1]); v.YSouradniceVrcholu = float.Parse(radek[2]); if (radek.Length >= 4) { v.TypVrcholu = (TypyVrcholu)int.Parse(radek[3]); } vysledek.Add(v); } return(vysledek); }
/// <summary> /// Načítání vrcholů pro abstraktní soubor SEM C. /// </summary> public void NactiVrcholyProSemC() { List <DataVrcholu> vrcholy5000 = NactiDataVrcholuZCsv(cestaKsouboruSemCOrigo); List <KeyValuePair <string, DataVrcholu> > listDvouHodnot = new List <KeyValuePair <string, DataVrcholu> >(); for (int i = 0; i <= vrcholy5000.Count - 1; i++) { DataVrcholu dv = vrcholy5000[i]; //zalozit promennou vrcholu, protoze forem mam jen indexy KeyValuePair <string, DataVrcholu> kvp = new KeyValuePair <string, DataVrcholu>(dv.NazevVrcholu, dv); listDvouHodnot.Add(kvp); } listDvouHodnot.Sort((a, b) => a.Key.ToLower().CompareTo(b.Key.ToLower())); // blokacni faktor nastaven na 5 abstraktniSoubor.VybudujSoubor(listDvouHodnot, 5); }
/// <summary> /// Vkládání vrcholu do mapy. /// </summary> /// <param name="x">x-ová souřadnice vrcholu</param> /// <param name="y">z-souřadnice vrcholu</param> /// <param name="typyVrcholu"> typ vrcholů z výčtu</param> /// <param name="nazevVrcholu">název vrcholu, řetězec</param> /// <returns>vrací přidáváný vrchol</returns> public DataVrcholu VlozVrchol(int x, int y, TypyVrcholu typyVrcholu, string nazevVrcholu) { if (nazevVrcholu == "") { throw new Exception("Neplatný název bodu."); } else if (NajdiVrcholSemA(nazevVrcholu) != null) { throw new Exception("Bod již exitsuje. Prosím zvolte jiný."); } DataVrcholu v = new DataVrcholu(); v.XSouradniceVrcholu = x; v.YSouradniceVrcholu = y; v.TypVrcholu = typyVrcholu; v.NazevVrcholu = nazevVrcholu; ag.PridejVrchol(v.NazevVrcholu, v); // po pridani vrcholu znovu vybudujeme RozsahovyStrom // List ma pretizeny konstruktor, ktery je schopny prijmout kolekci typu IEnumerable rs.Vybuduj(new List <DataVrcholu>(ag.VratSeznamVrcholu())); return(v); }