Skip to content
Snippets Groups Projects
Commit cd0d55bf authored by Vesa Lappalainen's avatar Vesa Lappalainen :bicyclist:
Browse files

live15 loppu

parent 70b34fe8
No related branches found
No related tags found
No related merge requests found
using System.Collections.Generic;
using Jypeli;
namespace LaskeMatka;
......@@ -21,8 +22,7 @@ public class LaskeMatka : PhysicsGame
private const double y2 = 20;
private const double pallonKoko = (y2 - y1) / 300;
private readonly Vector[] pisteet = new Vector[10]; // taulukolle
private int lkm = 0; // taulukolle
private readonly List<Vector> pisteet = new List<Vector>();
private readonly DoubleMeter yhteismatka = new DoubleMeter(0);
private Label matkanaytto;
......@@ -52,7 +52,7 @@ public class LaskeMatka : PhysicsGame
/// </summary>
private void LaskeMatkaNayttoon()
{
double dist = SummaaEtaisyydet(pisteet, lkm); // Taulukolle
double dist = SummaaEtaisyydet(pisteet); // Taulukolle
yhteismatka.Value = dist;
}
......@@ -61,10 +61,10 @@ public class LaskeMatka : PhysicsGame
/// Lasketaan listassa olevien pisteiden vöisten etäisyyksien summa
/// </summary>
/// <param name="pisteet"></param>
/// <param name="lkm">paljonko käytetty</param>
/// <returns></returns>
public static double SummaaEtaisyydet(Vector[] pisteet, int lkm) // taulukolle
public static double SummaaEtaisyydet(List<Vector> pisteet) // taulukolle
{
int lkm = pisteet.Count;
double d = 0;
if (lkm < 2) return 0;
Vector p1 = pisteet[0];
......@@ -108,8 +108,7 @@ public class LaskeMatka : PhysicsGame
{
// siirretään sininen pisteen kohdalle
klikattuPiste.Position = piste;
if ( lkm < pisteet.Length ) { pisteet[lkm] = piste; lkm++; } // taulukolle
// pisteet.Add(piste); // listalle
pisteet.Add(piste); // listalle
LuoPallo(this, piste, pallonKoko, Color.Black);
LaskeMatkaNayttoon();
}
......@@ -121,6 +120,7 @@ public class LaskeMatka : PhysicsGame
/// <param name="canvas"></param>
private void PiirraPisteidenValisteViivat(Canvas canvas)
{
int lkm = pisteet.Count;
if (lkm < 2) return;
canvas.BrushColor = Color.Green;
Vector p1 = pisteet[0];
......
......@@ -22,9 +22,100 @@ public class Listat
taulukko[1] = 9;
int suurin = Suurin(taulukko);
Console.WriteLine("Suurin: " + suurin);
List<int> lista = new List<int>();
lista.Add(3); lista.Add(2); lista.Add(5);
Console.WriteLine(String.Join(" ", lista));
lista[1] = 9; // alkioihin viitataan kuten taulukossakin // lista.set(1,9);
lista.Add(99); // mutta voidaan lisätä uusiakin
lista.Insert(2,55); // jopa keskelle
int lkoko = lista.Count; // Huom! Määrä eri tavalla
Console.WriteLine(String.Join(" ", lista) + " koko: " + lkoko);
lista.Remove(99); // ja poistaa (ensimmäisen)
Console.WriteLine(String.Join(" ", lista) + " koko: " + lista.Count+ " " + lista.Capacity);
suurin = Suurin(lista);
Console.WriteLine(suurin);
// Lista voi olla mitä tyyppiä vaan. Listan voi alustaa saman tyypin taulukolla
List<double> dluvut = new List<double>(){3.5,1.2,9.3,6.2};
Console.WriteLine(String.Join(" ", dluvut));
dluvut.Sort(); // listan voi järjestää jos on Linq käytössä
Console.WriteLine(String.Join(" ", dluvut));
double dsuurin = Suurin(dluvut);
dsuurin = dluvut.Max(); // listan suurin löytyy näinkin jos on Linq käytössä
Console.WriteLine(dsuurin);
int lkm5 = LaskeLuvut(lista, 5);
lkm5 = lista.Sum(Onko5);
lkm5 = lista.Sum(delegate(int a) { if (a == 5) return 1; return 0; });
lkm5 = lista2.Sum(a => a == 5 ? 1 : 0); // lambda lauseke
if (lkm5 > 5) { }
}
public static int Onko5(int a)
{
if (a == 5) return 1;
return 0;
}
/// <summary>
/// Etsitään taulukosta montako pyydytettyä lukua siellä on.
/// </summary>
/// <param name="luvut">taulukko josta etsitään</param>
/// <param name="mitaEtsitaan">etsittävä luku</param>
/// <returns>montako etsittävää löytui</returns>
/// <example>
/// <pre name="test">
/// int[] luvut = {1,2,3,4,3,2,0};
/// LaskeLuvut(luvut,5) === 0;
/// LaskeLuvut(luvut,3) === 2;
/// LaskeLuvut(luvut,1) === 1;
/// LaskeLuvut(new int[]{},1) === 0;
/// </pre>
/// </example>
public static int LaskeLuvut(int mitaEtsitaan)
{
return LaskeLuvut(null, mitaEtsitaan);
}
/// <summary>
/// Etsitään taulukosta montako pyydytettyä lukua siellä on.
/// </summary>
/// <param name="luvut">taulukko josta etsitään</param>
/// <param name="mitaEtsitaan">etsittävä luku</param>
/// <returns>montako etsittävää löytui</returns>
/// <example>
/// <pre name="test">
/// int[] luvut = {1,2,3,4,3,2,0};
/// LaskeLuvut(luvut,5) === 0;
/// LaskeLuvut(luvut,3) === 2;
/// LaskeLuvut(luvut,1) === 1;
/// LaskeLuvut(new int[]{},1) === 0;
/// </pre>
/// </example>
public static int LaskeLuvut(IList<int> luvut, int mitaEtsitaan)
{
int lkm = 0;
/*
for (int i = 0; i < luvut.Length; i++)
{
int luku = luvut[i];
if (luku == mitaEtsitaan)
lkm++;
}
*/
foreach (int luku in luvut)
if (luku == mitaEtsitaan)
lkm++;
return lkm;
}
/// <summary>
/// Etsitään taulukon suurin
/// </summary>
......@@ -40,12 +131,13 @@ public class Listat
/// Suurin(new int[0]) === 0;
/// </pre>
/// </example>
public static int Suurin(int[] luvut)
public static T Suurin<T>(IList<T> luvut) where T : IComparable<T>
{
if (luvut.Length == 0) return 0;
int suurin = luvut[0];
foreach (int luku in luvut)
if (luku > suurin) suurin = luku;
// if (luvut.Count == 0) return 0;
T suurin = luvut[0];
foreach (T luku in luvut)
if (luku.CompareTo(suurin) > 0) suurin = luku;
return suurin;
}
}
\ No newline at end of file
// ReSharper disable all
using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using NUnit.Framework;
using static Listat;
[TestFixture]
[DefaultFloatingPointTolerance(0.000001)]
public class TestListat
{
[Test]
public void TestSuurin34()
{
int[] lista = {5,3,8,7};
Assert.AreEqual( 8, Suurin(lista) , "in method Suurin, line 36");
Assert.AreEqual( 3, Suurin(new int[]{1,2,3}) , "in method Suurin, line 37");
Assert.AreEqual( 4, Suurin(new int[]{4,2,3}) , "in method Suurin, line 38");
Assert.AreEqual( 5, Suurin(new int[]{1,5,3}) , "in method Suurin, line 39");
Assert.AreEqual( 0, Suurin(new int[0]) , "in method Suurin, line 40");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="NUnit" Version="3.13.1"/>
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Listat\Listat.csproj"/>
</ItemGroup>
</Project>

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KasvataTaulukkoa", "KasvataTaulukkoa\KasvataTaulukkoa.csproj", "{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaskeMatka", "LaskeMatka\LaskeMatka.csproj", "{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Listat", "Listat\Listat.csproj", "{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ListatTest", "ListatTest\ListatTest.csproj", "{DB06D53E-070B-4652-97C0-1D53D0A2FB62}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Release|Any CPU.Build.0 = Release|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Release|Any CPU.Build.0 = Release|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Release|Any CPU.Build.0 = Release|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Release|Any CPU.Build.0 = Release|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Release|Any CPU.Build.0 = Release|Any CPU
{DB06D53E-070B-4652-97C0-1D53D0A2FB62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DB06D53E-070B-4652-97C0-1D53D0A2FB62}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DB06D53E-070B-4652-97C0-1D53D0A2FB62}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DB06D53E-070B-4652-97C0-1D53D0A2FB62}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal

Microsoft Visual Studio Solution File, Format Version 12.00
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KasvataTaulukkoa", "KasvataTaulukkoa\KasvataTaulukkoa.csproj", "{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaskeMatka", "LaskeMatka\LaskeMatka.csproj", "{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Listat", "Listat\Listat.csproj", "{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B099DBC9-FA97-401D-A15D-6AB3BD56C6DD}.Release|Any CPU.Build.0 = Release|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0C3C7C0A-B68B-4BF9-987B-43F2D55613C0}.Release|Any CPU.Build.0 = Release|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C64228A6-8056-4C07-AA9A-F4959B1BF9CE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment