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