Ejemplo n.º 1
0
        public IActionResult PutTulos([FromBody] tiedot tulos)
        {
            ViikkokisatContext context    = new ViikkokisatContext();
            string             ominaisuus = "";

            var uusitulos = new Tulokset {
                Tunnus = tulos.Tunnus
            };

            if (tulos.Mukana == 1)
            {
                uusitulos.K1 = tulos.K1;
                ominaisuus   = "K1";
            }
            else if (tulos.Mukana == 2)
            {
                uusitulos.K2 = tulos.K2;
                ominaisuus   = "K2";
            }
            else if (tulos.Mukana == 4)
            {
                uusitulos.Tasoitus = tulos.Tasoitus;
                ominaisuus         = "Tasoitus";
            }
            else
            {
                return(NotFound());
            }

            context.Entry(uusitulos).Property(ominaisuus).IsModified = true;
            context.SaveChanges();

            return(Ok());
        }
Ejemplo n.º 2
0
        private static void Main()
        {
            var sijainti = Environment.CurrentDirectory + @"\tulokset\";

            while (true)
            {
                try
                {
                    Directory.CreateDirectory(sijainti);

                    Console.Write("Säikeiden lukumäärä: ");
                    Tyolaiset = Convert.ToInt32(Console.ReadLine());

                    if (((int)(Math.Ceiling((Math.Log(Tyolaiset) /
                                             Math.Log(2)))) != (int)(Math.Floor((Math.Log(Tyolaiset) /
                                                                                 Math.Log(2))))) || Tyolaiset < 2)
                    {
                        throw new Exception();
                    }

                    Console.Write("Alkioiden lukumäärä per taulukko: ");
                    AlkioidenMaara = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Ajojen lukumäärä: ");
                    AjojenMaara = Convert.ToInt32(Console.ReadLine());
                    Console.Write("Käytettävä algoritmi ([m]ergesort / [q]uicksort): ");
                    Algoritmi = Console.ReadLine()?.ToLower();

                    if (!(Algoritmi == "m" || Algoritmi == "mergesort" || Algoritmi == "q" || Algoritmi == "quicksort"))
                    {
                        throw new Exception();
                    }
                    break;
                }
                catch (Exception)
                {
                    Console.WriteLine("Virhe syötteissä, yritä uudelleen (Huom! Säikeet kahden potensseina (2,4,8..)).");
                }
            }

            if (Algoritmi == "m")
            {
                Algoritmi = "mergesort";
            }

            if (Algoritmi == "q")
            {
                Algoritmi = "quicksort";
            }

            var tiedostonNimi = Algoritmi + "_Alkioita" + AlkioidenMaara + "_Tyolaisia" + Tyolaiset + ".csv";

            using var writer = new StreamWriter(sijainti + tiedostonNimi, true, Encoding.UTF8);
            var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);

            csv.Configuration.RegisterClassMap <TuloksetMap>();

            var kaikkiSuoritusajat = new List <Tulokset>();

            for (var indeksi = 0; indeksi < AjojenMaara; indeksi++)
            {
                Console.WriteLine("Suoritetaan " + (indeksi + 1) + ". ajoa");

                var sekventiaalinenKellotus = new Stopwatch();
                var rinnakkainenKellotus    = new Stopwatch();
                var sekventiaalinenTaulukko = GeneroiListaSatunnaisistaAlkioista(AlkioidenMaara, 0, 2147483647);
                var rinnakkainenTaulukko    = (int[])sekventiaalinenTaulukko.Clone();

                if (Algoritmi == "mergesort")
                {
                    var mergesort = new Mergesort();

                    sekventiaalinenKellotus.Start();
                    mergesort.SekventiaalinenJarjestys(sekventiaalinenTaulukko);
                    sekventiaalinenKellotus.Stop();

                    rinnakkainenKellotus.Start();
                    mergesort.RinnakkainenJarjestys(Tyolaiset, rinnakkainenTaulukko);
                    rinnakkainenKellotus.Stop();

                    if (sekventiaalinenTaulukko.SequenceEqual(rinnakkainenTaulukko) && Jarjestetty(sekventiaalinenTaulukko))
                    {
                        var suoritusajat = new Tulokset
                        {
                            RinnakkainenSuoritusaika    = rinnakkainenKellotus.ElapsedMilliseconds,
                            SekventiaalinenSuoritusaika = sekventiaalinenKellotus.ElapsedMilliseconds
                        };

                        kaikkiSuoritusajat.Add(suoritusajat);
                    }
                    else
                    {
                        Console.WriteLine("Virhe mergesortin järjestämisessä");
                    }
                }
                else if (Algoritmi == "quicksort")
                {
                    var quicksort = new Quicksort();

                    sekventiaalinenKellotus.Start();
                    quicksort.SekventiaalinenJarjestys(sekventiaalinenTaulukko);
                    sekventiaalinenKellotus.Stop();

                    rinnakkainenKellotus.Start();
                    quicksort.RinnakkainenJarjestys(Tyolaiset, rinnakkainenTaulukko);
                    rinnakkainenKellotus.Stop();

                    if (sekventiaalinenTaulukko.SequenceEqual(rinnakkainenTaulukko) && Jarjestetty(sekventiaalinenTaulukko))
                    {
                        var suoritusajat = new Tulokset
                        {
                            RinnakkainenSuoritusaika    = rinnakkainenKellotus.ElapsedMilliseconds,
                            SekventiaalinenSuoritusaika = sekventiaalinenKellotus.ElapsedMilliseconds
                        };

                        kaikkiSuoritusajat.Add(suoritusajat);
                    }
                    else
                    {
                        Console.WriteLine("Virhe quicksortin järjestämisessä");
                    }
                }
                else
                {
                    Console.WriteLine("Väärä syöte algoritmiin");
                    break;
                }
            }

            Console.WriteLine(kaikkiSuoritusajat.Count == AjojenMaara
                ? "Kaikki suoritukset kirjattu tiedostoon."
                : "Osa suorituksista jäi kirjaamatta tiedostoon.");

            csv.WriteRecords(kaikkiSuoritusajat);
            writer.Close();
        }