From 8218df478809521f30848a2d44b0ff556789ed6a Mon Sep 17 00:00:00 2001 From: wienkop <uwe.wienkop@th-nuernberg.de> Date: Tue, 20 Apr 2021 11:19:17 +0200 Subject: [PATCH] 2021-04-20 Abschluss des Kapitels Verkettete Strukturen --- 05-1 BinTree/BinTree.cs | 66 ++++++++++++++ 05-1 BinTree/Program.cs | 41 +++++++++ .../05-2 IntroVererbungKfz.csproj | 9 ++ 05-2 IntroVererbungKfz/KfzCoolStyle.cs | 10 +++ 05-2 IntroVererbungKfz/KfzOldStyle.cs | 10 +++ 05-2 IntroVererbungKfz/Program.cs | 41 +++++++++ 05-UbgBinTree-Di/05-UbgBinTree-Di.csproj | 9 ++ 05-UbgBinTree-Di/BinTree.cs | 85 +++++++++++++++++++ 05-UbgBinTree-Di/Program.cs | 21 +++++ Prog2WienkopSS2021.sln | 14 ++- 10 files changed, 305 insertions(+), 1 deletion(-) create mode 100644 05-2 IntroVererbungKfz/05-2 IntroVererbungKfz.csproj create mode 100644 05-2 IntroVererbungKfz/KfzCoolStyle.cs create mode 100644 05-2 IntroVererbungKfz/KfzOldStyle.cs create mode 100644 05-2 IntroVererbungKfz/Program.cs create mode 100644 05-UbgBinTree-Di/05-UbgBinTree-Di.csproj create mode 100644 05-UbgBinTree-Di/BinTree.cs create mode 100644 05-UbgBinTree-Di/Program.cs diff --git a/05-1 BinTree/BinTree.cs b/05-1 BinTree/BinTree.cs index 8392dd6..e06a81b 100644 --- a/05-1 BinTree/BinTree.cs +++ b/05-1 BinTree/BinTree.cs @@ -11,6 +11,12 @@ namespace _05_1_BinTree public int number; public BItem left = null, right = null; public BItem (int Number) { number = Number; } + public override string ToString() + { + string lString = (left == null) ? "null" : left.number.ToString(); + string rString = (right == null) ? "null" : right.number.ToString(); + return $"left:{lString} <- {number} -> right:{rString}"; + } } BItem root = null; @@ -59,5 +65,65 @@ namespace _05_1_BinTree } return false; } + public void InOrderPrint() + { + InOrderPrint(root); + } + private void InOrderPrint(BItem item) + { // kleiner -- selbst -- größer + if (item != null) + { + Console.Write("( "); + if (item.left != null) + InOrderPrint(item.left); + // linke Elemente ausgeben + Console.Write(" "+item.number+ " "); + if (item.right != null) + InOrderPrint(item.right); + // rechte Elemente ausgeben + Console.Write(" )"); + } + } + + private IEnumerable<int> GetEnum(BItem item) + { + if (item != null) + { + foreach (var item2 in GetEnum(item.left)) + yield return item2; + + yield return item.number; + + foreach (var item2 in GetEnum(item.right)) + yield return item2; + } + } + public IEnumerator<int> GetEnumerator() + { + foreach (var item in GetEnum(root)) + yield return item; + } + + public void PreOrderPrint() + { + PreOrderPrint(root); + } + private void PreOrderPrint(BItem item) + { // kleiner -- selbst -- größer + if (item != null) + { + Console.Write("( "); + Console.Write(" " + item.number + " "); + + if (item.left != null) + PreOrderPrint(item.left); + // linke Elemente ausgeben + + if (item.right != null) + PreOrderPrint(item.right); + // rechte Elemente ausgeben + Console.Write(" )"); + } + } } } diff --git a/05-1 BinTree/Program.cs b/05-1 BinTree/Program.cs index 73d6c66..83400bc 100644 --- a/05-1 BinTree/Program.cs +++ b/05-1 BinTree/Program.cs @@ -10,8 +10,49 @@ namespace _05_1_BinTree bt.BInsert(50); bt.BInsert(80); bt.BInsert(30); + + bt.BInsert(50); + bt.BInsert(40); bt.BInsert(60); + + bt.InOrderPrint(); + Console.WriteLine("\n--------"); + bt.PreOrderPrint(); + //f1(); + + foreach (var item in bt) + { + Console.WriteLine(item); + } } + + static int fak(int n) + { + if (n == 1) + return 1; + else + return n * fak(n - 1); + } + + static void f1() + { + // ... + f1(); + // + } + static void f2() + { + // ... + f3(); + // + } + static void f3() + { + // ... + + } + + } } diff --git a/05-2 IntroVererbungKfz/05-2 IntroVererbungKfz.csproj b/05-2 IntroVererbungKfz/05-2 IntroVererbungKfz.csproj new file mode 100644 index 0000000..f4d6baf --- /dev/null +++ b/05-2 IntroVererbungKfz/05-2 IntroVererbungKfz.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_05_2_IntroVererbungKfz</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/05-2 IntroVererbungKfz/KfzCoolStyle.cs b/05-2 IntroVererbungKfz/KfzCoolStyle.cs new file mode 100644 index 0000000..b16b11e --- /dev/null +++ b/05-2 IntroVererbungKfz/KfzCoolStyle.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace _05_2_IntroVererbungKfz +{ + class KfzCoolStyle + { + } +} diff --git a/05-2 IntroVererbungKfz/KfzOldStyle.cs b/05-2 IntroVererbungKfz/KfzOldStyle.cs new file mode 100644 index 0000000..adb183a --- /dev/null +++ b/05-2 IntroVererbungKfz/KfzOldStyle.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace _05_2_IntroVererbungKfz +{ + class KfzOldStyle + { + } +} diff --git a/05-2 IntroVererbungKfz/Program.cs b/05-2 IntroVererbungKfz/Program.cs new file mode 100644 index 0000000..60ff173 --- /dev/null +++ b/05-2 IntroVererbungKfz/Program.cs @@ -0,0 +1,41 @@ +using System; + +namespace _05_2_IntroVererbungKfz +{ + //Kraftfahrzeuge: + // + //Steuerberechnung PKW: + //Hubraumsteuer + //Den Anteil für den Hubraum berechnen Sie dabei anhand der von der Motorenart abhängigen Hubraumsteuer: + + //Motorenart Steuern pro angefangenen 100 Kubikzentimetern Hubraum + //Benzin- / Ottomotor 2,00 Euro + //Dieselmotor 9,50 Euro + //Datenquelle: Bundesfinanzministerium + + //Ein Dieselfahrzeug mit einem Motorhubraum von 1.500 ccm kostet folglich 142,50 Euro Hubraumsteuer. + + //CO2-Steuer + //Zusätzlich wird die Steuer für den CO2-Ausstoß berechnet. Jedes Gramm CO2-Ausstoß pro Kilometer, das über + //dem Sockelwert liegt, kostet zwei Euro Steuern. Die Sockelwerte – „Freibeträge“ für unterschiedliche + //Zeitpunkte der Erstzulassung – können Sie der folgenden Tabelle entnehmen ... + //---------- + + // Steuerberechnung Motorrad + // Wie hoch ist die Steuer für Krafträder über 125 ccm? + // Je angefangene 25 ccm Hubraum müssen Sie jährlich eine Kfz-Steuer von 1,84 Euro entrichten. + // + // Steuerberechnung LKW + //Ein Lkw unterliegt der Kraftfahrzeugsteuer und muss besteuert werden + //Beim Lkw wird eine Steuer über Gewicht und andere Bedingungen erhoben + //Lkw-Steuer richtet sich auch nach Schadstoffklassen und Geräuschklassen + //Der Höchstsatz für die günstigste Lkw-Steuerklasse beträgt 556,00 Euro + + class Program + { + static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/05-UbgBinTree-Di/05-UbgBinTree-Di.csproj b/05-UbgBinTree-Di/05-UbgBinTree-Di.csproj new file mode 100644 index 0000000..7c7e6c6 --- /dev/null +++ b/05-UbgBinTree-Di/05-UbgBinTree-Di.csproj @@ -0,0 +1,9 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>netcoreapp3.1</TargetFramework> + <RootNamespace>_05_UbgBinTree_Di</RootNamespace> + </PropertyGroup> + +</Project> diff --git a/05-UbgBinTree-Di/BinTree.cs b/05-UbgBinTree-Di/BinTree.cs new file mode 100644 index 0000000..252b31d --- /dev/null +++ b/05-UbgBinTree-Di/BinTree.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace _05_UbgBinTree_Di +{ + // Programmieren Sie einen binären Baum, mit den Datenfeldern + // string Name + // int leftCount, rightCount -- Anzahl der Elemente im linken bzw. rechten Ast + // und den folgenden Methoden + // void Insert(string Name) -- Einfügen des Namens + // int Level(string Name) -> Liefert die Ebene zurück auf der sich der + // Knoten befindet (root=0, Nicht gefunden=-1) + + // Diskutieren Sie Ansätze, wie ein Knoten gelöscht werden könnte + // Diskutieren Sie, wie ein Baum ausgegeben werden könnte + + class BinTree + { + class BItem + { + public string name; + public BItem left = null, right = null; + public int lCount=0, rCount = 0; + public BItem(string Name) { name = Name; } + public override string ToString() + { + string lString = (left == null) ? "null" : left.name; + string rString = (right == null) ? "null" : right.name; + return $"left:{lString} -- {name}|{lCount}|{rCount} -- right:{rString}"; + } + } + BItem root = null; + + public void BInsert(string InsName) + { + BItem newItem = new BItem(InsName); + if (root == null) + root = newItem; + else + { + bool done = false; + BItem item = root; + do + { + if (InsName.CompareTo(item.name) < 0) // links oder rechts + { + item.lCount++; + if (item.left == null) + { + item.left = newItem; + done = true; + } + else + item = item.left; + } + else + { + item.rCount++; + if (item.right == null) + { + item.right = newItem; + done = true; + } + else + item = item.right; + } + } while (!done); + } + } + public int Level(string Name) + { + int level = 0; + BItem item = root; + while (item != null) + { + if (Name == item.name) + return level; + level++; + item = (Name.CompareTo(item.name) < 0) ? item.left : item.right; + } + return -1; + } + } +} diff --git a/05-UbgBinTree-Di/Program.cs b/05-UbgBinTree-Di/Program.cs new file mode 100644 index 0000000..935842a --- /dev/null +++ b/05-UbgBinTree-Di/Program.cs @@ -0,0 +1,21 @@ +using System; + +namespace _05_UbgBinTree_Di +{ + class Program + { + static void Main(string[] args) + { + BinTree tree = new BinTree(); + tree.BInsert("Claudia"); + tree.BInsert("Anton"); + tree.BInsert("Dieter"); + tree.BInsert("Berta"); + tree.BInsert("Emil"); + + Console.WriteLine(tree.Level("Claudia")); + Console.WriteLine(tree.Level("Anton")); + Console.WriteLine(tree.Level("Emil")); + } + } +} diff --git a/Prog2WienkopSS2021.sln b/Prog2WienkopSS2021.sln index f17d85e..b562fd2 100644 --- a/Prog2WienkopSS2021.sln +++ b/Prog2WienkopSS2021.sln @@ -33,7 +33,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "04-2 DoppeltVerketteteListe EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "05-UbgCycleList-Mo", "05-UbgCycleList-Mo\05-UbgCycleList-Mo.csproj", "{69264CD7-160B-45D5-8880-703EEBD6D7C2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05-1 BinTree", "05-1 BinTree\05-1 BinTree.csproj", "{7C9FA089-4364-4326-A973-99FD15DAFBC1}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "05-1 BinTree", "05-1 BinTree\05-1 BinTree.csproj", "{7C9FA089-4364-4326-A973-99FD15DAFBC1}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05-2 IntroVererbungKfz", "05-2 IntroVererbungKfz\05-2 IntroVererbungKfz.csproj", "{95016962-76A2-4029-9933-F87AAE6EC416}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "05-UbgBinTree-Di", "05-UbgBinTree-Di\05-UbgBinTree-Di.csproj", "{5CFBEC1D-F6F6-4A12-ACE6-560B677CCE3C}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -105,6 +109,14 @@ Global {7C9FA089-4364-4326-A973-99FD15DAFBC1}.Debug|Any CPU.Build.0 = Debug|Any CPU {7C9FA089-4364-4326-A973-99FD15DAFBC1}.Release|Any CPU.ActiveCfg = Release|Any CPU {7C9FA089-4364-4326-A973-99FD15DAFBC1}.Release|Any CPU.Build.0 = Release|Any CPU + {95016962-76A2-4029-9933-F87AAE6EC416}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {95016962-76A2-4029-9933-F87AAE6EC416}.Debug|Any CPU.Build.0 = Debug|Any CPU + {95016962-76A2-4029-9933-F87AAE6EC416}.Release|Any CPU.ActiveCfg = Release|Any CPU + {95016962-76A2-4029-9933-F87AAE6EC416}.Release|Any CPU.Build.0 = Release|Any CPU + {5CFBEC1D-F6F6-4A12-ACE6-560B677CCE3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CFBEC1D-F6F6-4A12-ACE6-560B677CCE3C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5CFBEC1D-F6F6-4A12-ACE6-560B677CCE3C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5CFBEC1D-F6F6-4A12-ACE6-560B677CCE3C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE -- GitLab