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()); }
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(); }