From 24602d8048b9f0b7242027e69d3a731a9a416e52 Mon Sep 17 00:00:00 2001
From: Uwe Wienkop <uwe.wienkop@th-nuernberg.de>
Date: Tue, 21 Dec 2021 11:16:55 +0100
Subject: [PATCH] 2021-12-21 Wiederholung &Vertiefung

---
 10 Enums/Program.cs                           | 30 ++++++++++++-
 12 Fibonacci/12 Fibonacci.csproj              |  9 ++++
 12 Fibonacci/Program.cs                       | 24 ++++++++++
 .../12 Mediendaten (alte Klausur).csproj      |  9 ++++
 12 Mediendaten (alte Klausur)/Program.cs      | 35 +++++++++++++++
 12 Strings/12 Strings.csproj                  |  9 ++++
 12 Strings/Program.cs                         | 24 ++++++++++
 .../12 StructLehrveranstaltungsplanung.csproj |  9 ++++
 12 StructLehrveranstaltungsplanung/Program.cs | 45 +++++++++++++++++++
 12 StructToString/Program.cs                  | 10 ++---
 Prog1_WS2021_22.sln                           | 32 +++++++++++--
 11 files changed, 226 insertions(+), 10 deletions(-)
 create mode 100644 12 Fibonacci/12 Fibonacci.csproj
 create mode 100644 12 Fibonacci/Program.cs
 create mode 100644 12 Mediendaten (alte Klausur)/12 Mediendaten (alte Klausur).csproj
 create mode 100644 12 Mediendaten (alte Klausur)/Program.cs
 create mode 100644 12 Strings/12 Strings.csproj
 create mode 100644 12 Strings/Program.cs
 create mode 100644 12 StructLehrveranstaltungsplanung/12 StructLehrveranstaltungsplanung.csproj
 create mode 100644 12 StructLehrveranstaltungsplanung/Program.cs

diff --git a/10 Enums/Program.cs b/10 Enums/Program.cs
index 90630a4..d217e24 100644
--- a/10 Enums/Program.cs	
+++ b/10 Enums/Program.cs	
@@ -4,8 +4,32 @@ namespace _10_Enums
 {
     // Enums definieren jeweils einen neuen DATENTYP, KEINE VARIABLEN
     enum Ampelfarben { rot, gelb, grün }
-    enum Ampelfarben2 { rot, gelb, grün, blau, lila }
+    
 
+    struct Xyz
+    {
+        int x;
+        Ampelfarben a1;
+        public Xyz(int X, Ampelfarben ampel)
+        {
+            x = X;
+            a1 = ampel;
+        }
+    }
+
+    struct Xyz2
+    {
+        public enum Ampelfarben2 { rot, gelb, grün, blau, lila }        
+            // enum in der struct --> muss public sein, damit es z.B. im Konstruktor aufgerufen werden kann
+            //       sonst: eine privater enum in der Schnittstelle einer öffentlichen Funktion
+        int x;
+        Ampelfarben2 a1;
+        public Xyz2(int X, Ampelfarben2 ampel)
+        {
+            x = X;
+            a1 = ampel;
+        }
+    }
     class Program
     {
         static void Main(string[] args)
@@ -13,6 +37,10 @@ namespace _10_Enums
             //enum Ampel { rot, gelb, grün};   
             //Ampel = Ampel.rot;              // FALSCH!!! Enums definieren jeweils einen neuen DATENTYP, KEINE VARIABLEN
 
+            Xyz yz = new Xyz(1, Ampelfarben.gelb);           // enum auf struct Ebene --> kann einfach verwendet werden
+            Xyz2 yz2 = new Xyz2(1, Xyz2.Ampelfarben2.gelb);  // enum IN struct --> Zugriff über struct-Name.enum
+
+
             int ampel1 = 0;
 
             if (ampel1 == 0) // Ist die Ampel == rot?
diff --git a/12 Fibonacci/12 Fibonacci.csproj b/12 Fibonacci/12 Fibonacci.csproj
new file mode 100644
index 0000000..d926299
--- /dev/null
+++ b/12 Fibonacci/12 Fibonacci.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_12_Fibonacci</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/12 Fibonacci/Program.cs b/12 Fibonacci/Program.cs
new file mode 100644
index 0000000..78ec365
--- /dev/null
+++ b/12 Fibonacci/Program.cs	
@@ -0,0 +1,24 @@
+using System;
+
+namespace _12_Fibonacci
+{
+    class Program
+    {
+        // Fib(n) = Fib(n-1)+Fib(n-2)
+        // Fib(0|1) = 1
+        static int Fib(int n)
+        {
+            if (n <= 1)
+                return 1;
+            return Fib(n - 1) + Fib(n - 2);
+        }
+
+        static void Main(string[] args)
+        {
+            for (int i = 0; i < 10; i++)
+            {
+                Console.WriteLine($"{i,2} | {Fib(i)}");
+            }
+        }
+    }
+}
diff --git a/12 Mediendaten (alte Klausur)/12 Mediendaten (alte Klausur).csproj b/12 Mediendaten (alte Klausur)/12 Mediendaten (alte Klausur).csproj
new file mode 100644
index 0000000..21a3e16
--- /dev/null
+++ b/12 Mediendaten (alte Klausur)/12 Mediendaten (alte Klausur).csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_12_Mediendaten__alte_Klausur_</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/12 Mediendaten (alte Klausur)/Program.cs b/12 Mediendaten (alte Klausur)/Program.cs
new file mode 100644
index 0000000..5ee064b
--- /dev/null
+++ b/12 Mediendaten (alte Klausur)/Program.cs	
@@ -0,0 +1,35 @@
+using System;
+
+namespace _12_Mediendaten__alte_Klausur_
+{
+    enum MTyp { mp3, mp4, Bilder}
+    struct Medium
+    {
+        public string name;
+        public MTyp typ;
+        public Medium (string Name, MTyp Typ=MTyp.Bilder)
+        {
+            name = Name;
+            typ = Typ;
+        }
+    }
+    class Program
+    {
+        static int[] statistik(Medium[] mfeld)
+        {
+            int[] anzahlen = new int[3];
+            foreach (Medium medium in mfeld)
+            {
+                anzahlen[(int)medium.typ]++;        // hier wird ein enum als Index verwendet!
+                //if (medium.typ == MTyp.mp3)
+                //    anzahlen[0]++;
+                //  :                
+            }
+            return anzahlen;
+        }
+        static void Main(string[] args)
+        {
+            Console.WriteLine("Hello World!");
+        }
+    }
+}
diff --git a/12 Strings/12 Strings.csproj b/12 Strings/12 Strings.csproj
new file mode 100644
index 0000000..0e63e5c
--- /dev/null
+++ b/12 Strings/12 Strings.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_12_Strings</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/12 Strings/Program.cs b/12 Strings/Program.cs
new file mode 100644
index 0000000..747ea27
--- /dev/null
+++ b/12 Strings/Program.cs	
@@ -0,0 +1,24 @@
+using System;
+using System.Text;
+
+namespace _12_Strings
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            string s = "Hello World!";
+            Console.WriteLine(char.ToUpper(s[4]));
+            // s[4] = char.ToUpper(s[4]);   -- Zeichen in strings sind readonly!!!
+            string s2 = s.Substring(0, 4) + char.ToUpper(s[4]) + s.Substring(5);
+            string s3 = s.Replace("o", "O");
+            Console.WriteLine(s2);
+            Console.WriteLine(s3);
+
+            StringBuilder sb1 = new StringBuilder(s);
+            sb1[4] = char.ToUpper(sb1[4]);  // -- Zeichen in StringBuilder-Variablen sind veränderbar
+            string s4 = sb1.ToString();
+            Console.WriteLine(s4);
+        }
+    }
+}
diff --git a/12 StructLehrveranstaltungsplanung/12 StructLehrveranstaltungsplanung.csproj b/12 StructLehrveranstaltungsplanung/12 StructLehrveranstaltungsplanung.csproj
new file mode 100644
index 0000000..6625503
--- /dev/null
+++ b/12 StructLehrveranstaltungsplanung/12 StructLehrveranstaltungsplanung.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_12_StructLehrveranstaltungsplanung</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/12 StructLehrveranstaltungsplanung/Program.cs b/12 StructLehrveranstaltungsplanung/Program.cs
new file mode 100644
index 0000000..5c9ea0b
--- /dev/null
+++ b/12 StructLehrveranstaltungsplanung/Program.cs	
@@ -0,0 +1,45 @@
+using System;
+
+namespace _12_StructLehrveranstaltungsplanung
+{
+    enum LVArt {  Vorlesung, Uebung, Seminar}
+    struct LehrVeranst
+    {
+        public string fach, raum, semgruppe;
+        public LVArt art;
+        public int id;
+
+        public LehrVeranst(string Fach, string Raum, string Semgruppe, int Id, LVArt Art=LVArt.Vorlesung)
+        {       // vor dem Konstruktor KEIN static
+            fach = Fach;
+            raum = Raum;
+            semgruppe = Semgruppe;
+            art = Art;
+            id = Id;
+        }
+                // vor einem etwaigen ToString() ebenfalls KEIN static
+    }
+    class Program
+    {
+        public static int GetId(LehrVeranst lv) => lv.id;
+        public static bool Kollision(LehrVeranst lv1, LehrVeranst lv2)
+        {
+            if (lv1.id == lv2.id)
+                return false;
+
+            //bool b = lv1.raum == lv2.raum || lv1.semgruppe == lv2.semgruppe;
+            //return b;
+
+            if (lv1.raum == lv2.raum || lv1.semgruppe == lv2.semgruppe) // if (bool:true oder false)
+                return true;
+            else
+                return false;
+        }
+        static void Main(string[] args)
+        {
+            LehrVeranst lv1 = new LehrVeranst("ProzProg", "KA.034", "MIN1/AMP", 1001);
+            LehrVeranst lv2 = new LehrVeranst("ProzProg", "HQ.205", "MIN1/AMP", 1002, LVArt.Uebung);
+            Console.WriteLine(Kollision(lv1, lv2));
+        }
+    }
+}
diff --git a/12 StructToString/Program.cs b/12 StructToString/Program.cs
index fcbd7f9..1fe9006 100644
--- a/12 StructToString/Program.cs	
+++ b/12 StructToString/Program.cs	
@@ -2,11 +2,11 @@
 
 namespace _12_StructToString
 {
-    struct Person
+    struct Person 
     {
         public string name, vorname;
-        public static string PersonToString(Person p) { return $"Name: {p.name}, Vorname: {p.vorname}"; }
-        //public static string ToString(Person p) { return $"Name: {p.name}, Vorname: {p.vorname}"; }
+        //public static string PersonToString(Person p) { return $"Name: {p.name}, Vorname: {p.vorname}"; }
+        ////public static string ToString(Person p) { return $"Name: {p.name}, Vorname: {p.vorname}"; }
         public override string ToString() { return $"Name: {name}, Vorname: {vorname}"; }
     }
     class Program
@@ -16,8 +16,8 @@ namespace _12_StructToString
             Person p1 = new Person();
             p1.name = "Müller";
             p1.vorname = "Anton";
-
-            Console.WriteLine(p1);
+            
+            Console.WriteLine(p1.ToString());
         }
     }
 }
diff --git a/Prog1_WS2021_22.sln b/Prog1_WS2021_22.sln
index 1ff467a..6b4d7c2 100644
--- a/Prog1_WS2021_22.sln
+++ b/Prog1_WS2021_22.sln
@@ -115,13 +115,21 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "11 ThrowIntro", "11 ThrowIn
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "12 PW_Check (SoSe2019)", "12 PW_Check (SoSe2019)\12 PW_Check (SoSe2019).csproj", "{0EC7D975-1D95-40B7-BBDF-73A475231A1F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 Params", "12 Params\12 Params.csproj", "{4EBDD0DB-69AC-4D1D-8D52-20C01CA0EF1F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "12 Params", "12 Params\12 Params.csproj", "{4EBDD0DB-69AC-4D1D-8D52-20C01CA0EF1F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 StructToString", "12 StructToString\12 StructToString.csproj", "{D7CB06EE-32B9-499C-9AE7-4391D4AC6438}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "12 StructToString", "12 StructToString\12 StructToString.csproj", "{D7CB06EE-32B9-499C-9AE7-4391D4AC6438}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 StructBruch", "12 StructBruch\12 StructBruch.csproj", "{D087E2B4-9E89-4456-ABB6-CCF348CB7E79}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "12 StructBruch", "12 StructBruch\12 StructBruch.csproj", "{D087E2B4-9E89-4456-ABB6-CCF348CB7E79}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 StringConcat", "12 StringConcat\12 StringConcat.csproj", "{B4191FF6-95B7-4577-AE98-9B42BC338F5A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "12 StringConcat", "12 StringConcat\12 StringConcat.csproj", "{B4191FF6-95B7-4577-AE98-9B42BC338F5A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 Strings", "12 Strings\12 Strings.csproj", "{F734F09D-F050-47AB-9A61-36598C31FA62}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 Fibonacci", "12 Fibonacci\12 Fibonacci.csproj", "{5D02394C-9622-41A8-A54C-6E86820824CF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 StructLehrveranstaltungsplanung", "12 StructLehrveranstaltungsplanung\12 StructLehrveranstaltungsplanung.csproj", "{1CF6FDB2-DAE5-42CF-8658-2CDE81918344}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "12 Mediendaten (alte Klausur)", "12 Mediendaten (alte Klausur)\12 Mediendaten (alte Klausur).csproj", "{6009194F-17E8-4EAA-B29E-47FA15EC53C9}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -369,6 +377,22 @@ Global
 		{B4191FF6-95B7-4577-AE98-9B42BC338F5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{B4191FF6-95B7-4577-AE98-9B42BC338F5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B4191FF6-95B7-4577-AE98-9B42BC338F5A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F734F09D-F050-47AB-9A61-36598C31FA62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F734F09D-F050-47AB-9A61-36598C31FA62}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F734F09D-F050-47AB-9A61-36598C31FA62}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F734F09D-F050-47AB-9A61-36598C31FA62}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5D02394C-9622-41A8-A54C-6E86820824CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5D02394C-9622-41A8-A54C-6E86820824CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5D02394C-9622-41A8-A54C-6E86820824CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5D02394C-9622-41A8-A54C-6E86820824CF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1CF6FDB2-DAE5-42CF-8658-2CDE81918344}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1CF6FDB2-DAE5-42CF-8658-2CDE81918344}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1CF6FDB2-DAE5-42CF-8658-2CDE81918344}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1CF6FDB2-DAE5-42CF-8658-2CDE81918344}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6009194F-17E8-4EAA-B29E-47FA15EC53C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6009194F-17E8-4EAA-B29E-47FA15EC53C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6009194F-17E8-4EAA-B29E-47FA15EC53C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6009194F-17E8-4EAA-B29E-47FA15EC53C9}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
-- 
GitLab