/// <summary> /// Adds a distance instance to the distances list in the DataSource /// </summary> /// <param name="distance"></param> public void AddDistance(DistanceStruct distance) { if (IsDistanceExist(distance) == true) { return; } m_xamlImp.AddDistance(distance); }
/// <summary> /// Returns true if a distance between two addresses of DistanceStruct object was found in the DataSource /// </summary> /// <param name="distanceTarget">Distance object to be checked</param> /// <returns></returns> public static bool IsDistanceExist(DistanceStruct distanceTarget) { foreach (DistanceStruct distance in m_xamlImp.GetAllDistances()) { if (distance == distanceTarget) { return(true); } } return(false); }
private void SearchButton_Click(object sender, RoutedEventArgs e) { int smallestDistance = 999; int count = filmList.Count - 1; DistanceStruct distanceList = new DistanceStruct(); String word1 = NameTextBox.Text; int constraint1 = convertLength(cmbLength.Text); String constraint2 = cmbGenre.Text; int constraint3 = convertRating(cmbRating.Text); List <string> closestDistances = new List <string>(); LoadFilmList(); for (int i = 0; i < filmList.Count - 1; i++) { int ratingInt = convertRating(filmList[i].sfilmRating); int lengthInt = convertLength(filmList[i].sfilmLength); if (constraint2 == filmList[i].sFilmGenre && constraint3 <= ratingInt && constraint1 >= lengthInt) { String word2 = filmList[i].sFilmName; // grabs film name from list of movies word2 = word2.ToLower(); word1 = word1.ToLower(); int distance = EditDistance(word1, word2, word1.Length, word2.Length); // O(m*n) if (distance < smallestDistance) { smallestDistance = distance; distanceList.sFilmName = word2; // store the smallest distance found distanceList.sDistance = distance; closestDistances.Add(word2); } if (distance == 0 || count == 0) { break; } count -= 1; } } StringBuilder message = new StringBuilder(); foreach (String movie in closestDistances) { message.AppendLine(movie + "\n"); } MessageBox.Show(message.ToString()); }
/// <summary> /// Returns true if a distance between two addresses was found in the DataSource /// </summary> /// <param name="originAddress">Origin address</param> /// <param name="destinationAddress">Destination address</param> /// <returns></returns> public static bool IsDistanceExist(AddressStruct originAddress, AddressStruct destinationAddress) { DistanceStruct distanceTarget = new DistanceStruct(originAddress, destinationAddress, 0); foreach (DistanceStruct distance in m_xamlImp.GetAllDistances()) { if (distance == distanceTarget) { return(true); } } return(false); }
/// <summary> /// Returns the distance between two addresses if found in the DataSource. Returns -1 if not found /// </summary> /// <param name="originAddress">Origin address</param> /// <param name="destinationAddress">Destination address</param> /// <returns></returns> public static double GetDistanceFromDataSource(AddressStruct originAddress, AddressStruct destinationAddress) { DistanceStruct distanceTarget = new DistanceStruct(originAddress, destinationAddress, 0); foreach (DistanceStruct distance in m_xamlImp.GetAllDistances()) { if (distance == distanceTarget) { return(distance.Distance); } } return(-1); }
//Distances public void AddDistance(DistanceStruct distance) { DataSource.DistancesList.Add(distance); DataSource.DistancesList.Sort((d1, d2) => d1.OriginAddress.CompareTo(d2.OriginAddress)); SaveDistancesList(DataSource.DistancesList); }