Guest User

Untitled

a guest
Dec 3rd, 2019
101
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. /// <summary>
  6. /// Ohjelma lukee listaan sarjan liukulukutyyppisiä mittaustietoja.
  7. /// </summary>
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. List<Double> arvot;
  13. string arvotTekstina;
  14.  
  15. arvot = LueArvot();
  16. Console.WriteLine(arvot.Count);
  17. arvotTekstina = MuunnaListaTekstiksi(arvot);
  18. Console.WriteLine(arvotTekstina);
  19. Console.WriteLine(arvot[arvot.Count - 1]);
  20. double keskiarvo = LaskeKeskiarvo(arvot);
  21. Console.WriteLine("Keskiarvo: " + keskiarvo);
  22. Console.WriteLine("Suurin on paikassa " + HaeSuurimmanSijainti(arvot));
  23. Console.WriteLine("Haettu löytyy kohdasta " + HaeValilta(arvot, 5, 1));
  24.  
  25.  
  26. Console.ReadKey();
  27. }
  28.  
  29. /// <summary>
  30. /// Luo syötteen luvuista listan.
  31. /// </summary>
  32. /// <returns>Mittaustiedot liukulukulistana syöttöjärjestyksessä.</returns>
  33. static List<double> LueArvot()
  34. {
  35. // Syöterivin jakamisen määräävät välimerkit, tässä välilyönti.
  36. char[] erottimet = new char[] { ' ' };
  37. // Koko syöterivi.
  38. string luettu;
  39. // Syöterivi pätkittynä välilyöntien kohdalta.
  40. string[] arvotTekstina;
  41. // Palautettava liukulukulista
  42. List<double> mittausarvot = new List<double>();
  43.  
  44. Console.WriteLine("Anna arvot välilyönnillä erotettuina");
  45. luettu = Console.ReadLine();
  46. arvotTekstina = luettu.Split(erottimet);
  47.  
  48. // Käy läpi mittaustiedot sisältävän tekstitaulukon ja muuttaa
  49. // jokaisen arvon tekstistä liukuluvuksi ja lisää mittausarvojen listaan.
  50. foreach(string arvoTekstina in arvotTekstina)
  51. {
  52. // TODO: muunna tekstimuotoinen arvo liukuluvuksi ja lisää listaan.
  53.  
  54. }
  55.  
  56. return mittausarvot;
  57. }
  58.  
  59. /// <summary>
  60. /// Palauttaa mittausarvojen keskiarvon.
  61. /// </summary>
  62. /// <param name="arvot">Lista, jossa mitteustiedot sijaitsevat.</param>
  63. /// <returns>Arvojen keskiarvon liukulukuna.</returns>
  64. static double LaskeKeskiarvo(List<double> arvot)
  65. {
  66. double summa = 0, keskiarvo;
  67.  
  68. foreach(double arvo in arvot)
  69. {
  70. summa = summa + arvo;
  71. }
  72. keskiarvo = summa / arvot.Count;
  73.  
  74. return keskiarvo;
  75. }
  76.  
  77. /// <summary>
  78. /// Muuttaa mittaustiedot sisältävän liukulukulistan tekstiksi,
  79. /// jonka voi tulostaa.
  80. /// </summary>
  81. /// <param name="arvot">Mittaustiedot sisältävä liukulukulista.</param>
  82. /// <returns>Mittaustiedot tekstinä.</returns>
  83. static string MuunnaListaTekstiksi(List<double> arvot)
  84. {
  85. string listaTekstina;
  86.  
  87. listaTekstina = arvot.Count.ToString() + " arvoa: ";
  88.  
  89. foreach(double arvo in arvot)
  90. {
  91. listaTekstina = listaTekstina + " " + arvo.ToString();
  92. }
  93.  
  94. return listaTekstina;
  95. }
  96.  
  97. /// <summary>
  98. /// Palauttaa listan suurimman arvon sijainnin kokonaislukuna.
  99. /// Jos samaa arvoa on enemmän kuin 1, palauttaa ensimmäisen
  100. /// sijainnin.
  101. /// </summary>
  102. /// <param name="arvot">Mittaustiedot sisältävä liukulukulista</param>
  103. /// <returns>Suurimman arvon indeksi kokonaislukuna.</returns>
  104. static int HaeSuurimmanSijainti(List<double> arvot)
  105. {
  106.  
  107. var maxIndex = arvot.IndexOf(arvot.Max());
  108. return maxIndex;
  109.  
  110.  
  111. }
  112.  
  113. /// <summary>
  114. /// Palauttaa ensimmäisen arvon sijainnin, joka osuu annetulle välille.
  115. /// Jos haettava arvo on 3,0 ja väli on 1, niin kelpaavat arvot ovat
  116. /// välillä 2,1 - 3,9. Välin loppu ei siis kuulu alueeseen.
  117. /// </summary>
  118. /// <param name="arvot">Mittaustiedot sisältävä liukulukulista.</param>
  119. /// <param name="haettava">Haettava mittaustieto.</param>
  120. /// <param name="vali">Kuinka paljon isommat ja pienemmät arvot kelpaavat.</param>
  121. /// <returns>Haetun arvon sijainti tai -1, jos sopivaa srvoa ei löydy.</returns>
  122. static int HaeValilta(List<double> arvot, double haettava, int vali)
  123. {
  124. // TODO: Etsi ensimmäinen arvo, joka osuu halutulle alueelle ja
  125. // palauta sen sijainti.
  126.  
  127.  
  128. }
  129. }
RAW Paste Data