static void Main(string[] args)
    {
        string LON    = Console.ReadLine();
        string LAT    = Console.ReadLine();
        int    N      = int.Parse(Console.ReadLine());
        Defib  defibr = null;
        double lon    = double.Parse(LON.Replace(",", "."));
        double lat    = double.Parse(LAT.Replace(",", "."));

        for (int i = 0; i < N; i++)
        {
            string DEFIB = Console.ReadLine();
            var    def   = new Defib(DEFIB);
            if (defibr == null)
            {
                defibr = def;
            }
            else
            {
                var dist = def.Distance(lon, lat);
                if (dist < defibr.Distance(lon, lat))
                {
                    defibr = def;
                }
            }
        }

        Console.WriteLine(defibr.Name);
    }
Beispiel #2
0
    static void Main(string[] args)
    {
        string LON  = Console.ReadLine().Replace(',', '.');
        string LAT  = Console.ReadLine().Replace(',', '.');
        User   user = new User(LON, LAT);
        int    N    = int.Parse(Console.ReadLine());

        List <Defib> defibsList = new List <Defib>();  //list of Defib objects

        for (int i = 0; i < N; i++)
        {
            // add all defibs to list
            defibsList.Add(new Defib(Console.ReadLine()));
        }

        // find the closest defib object
        Defib closestDefib = user.findClosestDefib(defibsList);

        Console.WriteLine(closestDefib.name);
    }
Beispiel #3
0
        public static void Simulate(int?maxIterations = null)
        {
            var current = new Location
            {
                Long = float.Parse(Console.ReadLine().Replace(',', '.')),
                Lat  = float.Parse(Console.ReadLine().Replace(',', '.'))
            };

            var defibCount = int.Parse(Console.ReadLine());

            Defib  closest         = null;
            double?closestDistance = null;

            for (var i = 0; i < defibCount; i++)
            {
                var data  = Console.ReadLine();
                var parts = data.Split(';').Select(x => x.Trim()).ToList();

                var defib = new Defib
                {
                    Name     = parts[1],
                    Location = new Location
                    {
                        Long = float.Parse(parts[4].Replace(',', '.')),
                        Lat  = float.Parse(parts[5].Replace(',', '.'))
                    }
                };

                var x1       = (defib.Location.Long - current.Long) * Math.Cos((current.Lat - defib.Location.Lat) / 2);
                var y        = defib.Location.Lat - current.Lat;
                var distance = Math.Sqrt(Math.Pow(x1, 2) + Math.Pow(y, 2)) * 6371;

                if (distance < closestDistance.GetValueOrDefault(double.MaxValue))
                {
                    closest         = defib;
                    closestDistance = distance;
                }
            }

            Console.WriteLine(closest.Name);
        }
Beispiel #4
0
    static string FindClosestDefib(string lon, string lat, IEnumerable <Defib> defibs)
    {
        const double earthRadius = 6371;
        var          longitude   = Double.Parse(lon.Replace(',', '.'));
        var          latitude    = Double.Parse(lat.Replace(',', '.'));

        double shortestDistance = Double.MaxValue;
        Defib  closestDefib     = null;

        foreach (var d in defibs)
        {
            var x    = (longitude - d.Longitude) * Math.Cos((d.Latitude + latitude) / 2);
            var y    = latitude - d.Latitude;
            var dist = Math.Sqrt((x * x) + (y * y)) * earthRadius;

            if (dist < shortestDistance)
            {
                shortestDistance = dist;
                closestDefib     = d;
            }
        }

        return(closestDefib.Name);
    }
Beispiel #5
0
    static void Main(string[] args)
    {
        string lon = Console.ReadLine();
        string lat = Console.ReadLine();
        int    n   = int.Parse(Console.ReadLine());

        var defibs = new Defib[n];

        for (int i = 0; i < n; i++)
        {
            var defibDetails = Console.ReadLine().Split(';');
            defibs[i] = new Defib
            {
                ID        = Int32.Parse(defibDetails[0]),
                Name      = defibDetails[1],
                Address   = defibDetails[2],
                Phone     = defibDetails[3],
                Longitude = Double.Parse(defibDetails[4].Replace(',', '.')),
                Latitude  = Double.Parse(defibDetails[5].Replace(',', '.'))
            };
        }

        Console.WriteLine(FindClosestDefib(lon, lat, defibs));
    }