From 0ed5363dda658f11c5d005c71caedd6a56a7859f Mon Sep 17 00:00:00 2001 From: wienkop <uwe.wienkop@th-nuernberg.de> Date: Mon, 29 Mar 2021 13:03:12 +0200 Subject: [PATCH] 2021-03-29 Verkettete Liste --- 02-4 VerketteteStrukturenIntro/Liste.cs | 46 ++++++++++++++++++ 02-4 VerketteteStrukturenIntro/Program.cs | 33 +++++++++++-- ...Time.csproj => 02-UbgKlasseTime-Di.csproj} | 0 .../03-UbgKlasseTime-Mo.csproj | 9 ++++ 03-UbgKlasseTime-Mo/Program.cs | 30 ++++++++++++ 03-UbgKlasseTime-Mo/Time.cs | 47 +++++++++++++++++++ Prog2WienkopSS2021.sln | 10 +++- 7 files changed, 168 insertions(+), 7 deletions(-) rename 02-UbgKlasseTime/{02-UbgKlasseTime.csproj => 02-UbgKlasseTime-Di.csproj} (100%) create mode 100644 03-UbgKlasseTime-Mo/03-UbgKlasseTime-Mo.csproj create mode 100644 03-UbgKlasseTime-Mo/Program.cs create mode 100644 03-UbgKlasseTime-Mo/Time.cs diff --git a/02-4 VerketteteStrukturenIntro/Liste.cs b/02-4 VerketteteStrukturenIntro/Liste.cs index 4a108ba..bf2f38a 100644 --- a/02-4 VerketteteStrukturenIntro/Liste.cs +++ b/02-4 VerketteteStrukturenIntro/Liste.cs @@ -8,5 +8,51 @@ namespace _02_4_VerketteteStrukturenIntro { public int zahl; public LItem next; + + public LItem(int k) { zahl = k; next = null; } + } + class Liste + { + public LItem first, last; + public Liste() + { + first = last = null; + } + public void AddLast(int k) + { + LItem neu = new LItem(k); + + if (first == null) + first = last = neu; + else + { + last.next = neu; // Schritt (1) + last = neu; // Schritt (2) + } + } + public void AddFirst(int k) + { + LItem neu = new LItem(k); + + if (first == null) + first = last = neu; + else + { + neu.next = first; // Schritt (1) + first = neu; // Schritt (2) + } + } + public void Ausgabe() + { + for (LItem item = first; item != null; item = item.next) + Console.WriteLine(item.zahl); + + //LItem item = first; + //while (item!=null) + //{ + // Console.WriteLine(item.zahl); + // item = item.next; + //} + } } } diff --git a/02-4 VerketteteStrukturenIntro/Program.cs b/02-4 VerketteteStrukturenIntro/Program.cs index cd608a2..ad42e13 100644 --- a/02-4 VerketteteStrukturenIntro/Program.cs +++ b/02-4 VerketteteStrukturenIntro/Program.cs @@ -7,13 +7,36 @@ namespace _02_4_VerketteteStrukturenIntro static void Main(string[] args) { // int[] f = new int[500]; - LItem e1 = new LItem(); - e1.zahl = 10; + #region Listenaufbau Intro + //LItem e1 = new LItem(10); + // Schritt 1: Anfrage an das BS: Gib Speicher für ein LItem + // BS antwortet: Speicher ab Adresse 100.000 + // Schritt 2: Initialisierung des Speichers bei 100.000 + // (100.000).zahl = 10; + // (100.000).next = null (0) + // Rückgabe des new() - Befehls --> 100.000 + // e1 = 100.000; - LItem e2 = new LItem(); - e2.zahl = 20; + //LItem e2 = new LItem(20); + // e2 = 200.000; - e1.next = e2; + //e1.next = e2; + // (100.000).next = 200.000 + #endregion + + Liste l1 = new Liste(); + //Liste l2 = new Liste(); + + l1.AddLast(10); + l1.AddLast(20); + l1.AddLast(30); + + for (int i = 100; i < 110; i++) + l1.AddLast(i); + + l1.AddFirst(5); + + l1.Ausgabe(); } } } diff --git a/02-UbgKlasseTime/02-UbgKlasseTime.csproj b/02-UbgKlasseTime/02-UbgKlasseTime-Di.csproj similarity index 100% rename from 02-UbgKlasseTime/02-UbgKlasseTime.csproj rename to 02-UbgKlasseTime/02-UbgKlasseTime-Di.csproj diff --git a/03-UbgKlasseTime-Mo/03-UbgKlasseTime-Mo.csproj b/03-UbgKlasseTime-Mo/03-UbgKlasseTime-Mo.csproj new file mode 100644 index 0000000..9a838b3 --- /dev/null +++ b/03-UbgKlasseTime-Mo/03-UbgKlasseTime-Mo.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_03_UbgKlasseTime_Mo</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/03-UbgKlasseTime-Mo/Program.cs b/03-UbgKlasseTime-Mo/Program.cs new file mode 100644 index 0000000..cd0a0cf --- /dev/null +++ b/03-UbgKlasseTime-Mo/Program.cs @@ -0,0 +1,30 @@ +using System; + +namespace _03_UbgKlasseTime_Mo +{ + class Program + { + + static void Main(string[] args) + { + Time t1 = new Time(9, 45); + Time t3 = "11:30"; + Time t2 = t1 + "1:30" + 15; + Console.WriteLine(t2); + TimeSpan ts1 = t3 - t1; + Console.WriteLine(t2); + Console.WriteLine(ts1.TotalMins); + Console.WriteLine(ts1); + if (t2) + Console.WriteLine("Guten Morgen"); + else + Console.WriteLine("Guten Tag"); + + + if (t2 == t3) + Console.WriteLine("Die Uhrzeiten sind gleich!"); + else + Console.WriteLine("Die Uhrzeiten stimmen nicht überein"); + } + } +} diff --git a/03-UbgKlasseTime-Mo/Time.cs b/03-UbgKlasseTime-Mo/Time.cs new file mode 100644 index 0000000..8e4b53f --- /dev/null +++ b/03-UbgKlasseTime-Mo/Time.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace _03_UbgKlasseTime_Mo +{ + class Time + { + int time; + + public Time(int stunden, int minuten) + { + time = stunden * 60 + minuten; + } + + private Time(int minuten) + { + time = minuten; + } + + public static implicit operator Time(string s) + { + string[] d = s.Split(':'); + return new Time(Convert.ToInt32(d[0]), Convert.ToInt32(d[1])); + } + public static implicit operator Time (int k) => new Time(k); + //public static implicit operator bool(Time t) => t.time < 12*60; + public static bool operator true(Time t) => t.time < 12 * 60; + public static bool operator false(Time t) => t.time >= 12 * 60; + + public static Time operator +(Time t1, Time t2) => new Time(t1.time + t2.time); + public override string ToString() => $"{time / 60}:{time % 60}"; + public static TimeSpan operator -(Time t2, Time t1) + => new TimeSpan(t2.time-t1.time); + public static bool operator ==(Time t1, Time t2) => t1.time == t2.time; + public static bool operator !=(Time t1, Time t2) => !(t1==t2); + } + + class TimeSpan + { + int span; + public TimeSpan(int minuten) { span = minuten; } + + public int TotalMins { get => span; } + public override string ToString() => $"{span / 60}:{span % 60} Stunden:Mins"; + } +} diff --git a/Prog2WienkopSS2021.sln b/Prog2WienkopSS2021.sln index 433149b..cf5db06 100644 --- a/Prog2WienkopSS2021.sln +++ b/Prog2WienkopSS2021.sln @@ -15,9 +15,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "01-3 TestPersonalausweis", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "02-1 OpUeberladungBrueche", "02-1 OpUeberladungBrueche\02-1 OpUeberladungBrueche.csproj", "{0CEC8CDB-1B65-4A3D-B6BD-5DE722BEE96D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "02-UbgKlasseTime", "02-UbgKlasseTime\02-UbgKlasseTime.csproj", "{A0A79CA1-F22A-4890-9A24-136FBAFBD0B4}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "02-UbgKlasseTime-Di", "02-UbgKlasseTime\02-UbgKlasseTime-Di.csproj", "{A0A79CA1-F22A-4890-9A24-136FBAFBD0B4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "02-4 VerketteteStrukturenIntro", "02-4 VerketteteStrukturenIntro\02-4 VerketteteStrukturenIntro.csproj", "{1FC21BA1-47A7-4466-BA80-A29C0AFD5FB6}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "02-4 VerketteteStrukturenIntro", "02-4 VerketteteStrukturenIntro\02-4 VerketteteStrukturenIntro.csproj", "{1FC21BA1-47A7-4466-BA80-A29C0AFD5FB6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03-UbgKlasseTime-Mo", "03-UbgKlasseTime-Mo\03-UbgKlasseTime-Mo.csproj", "{DD51B164-0F20-47B9-94C4-549CE555DDC2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -57,6 +59,10 @@ Global {1FC21BA1-47A7-4466-BA80-A29C0AFD5FB6}.Debug|Any CPU.Build.0 = Debug|Any CPU {1FC21BA1-47A7-4466-BA80-A29C0AFD5FB6}.Release|Any CPU.ActiveCfg = Release|Any CPU {1FC21BA1-47A7-4466-BA80-A29C0AFD5FB6}.Release|Any CPU.Build.0 = Release|Any CPU + {DD51B164-0F20-47B9-94C4-549CE555DDC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD51B164-0F20-47B9-94C4-549CE555DDC2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DD51B164-0F20-47B9-94C4-549CE555DDC2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD51B164-0F20-47B9-94C4-549CE555DDC2}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE -- GitLab