From 68aa1c327c9c63ab442e8905d5a739579c5c5aca Mon Sep 17 00:00:00 2001
From: Uwe Wienkop <uwe.wienkop@th-nuernberg.de>
Date: Mon, 6 Dec 2021 11:44:46 +0100
Subject: [PATCH] 10 Dateioperationen StreamReader

---
 09 CaesarCodierung/Program.cs                | 10 +++++---
 10 StreamsIntro/Program.cs                   | 27 +++++++++++++++++++-
 10 StreamsIntro/Verkaeufe.txt                |  3 +++
 10 UebgMoRekursion/10 UebgMoRekursion.csproj |  9 +++++++
 10 UebgMoRekursion/Program.cs                | 23 +++++++++++++++++
 10 UebgSpeisekarte_Mo/Program.cs             | 27 +++++++++++++++++++-
 10 Wetterdaten/Program.cs                    |  9 ++++---
 Prog1_WS2021_22.sln                          | 14 +++++++---
 8 files changed, 108 insertions(+), 14 deletions(-)
 create mode 100644 10 StreamsIntro/Verkaeufe.txt
 create mode 100644 10 UebgMoRekursion/10 UebgMoRekursion.csproj
 create mode 100644 10 UebgMoRekursion/Program.cs

diff --git a/09 CaesarCodierung/Program.cs b/09 CaesarCodierung/Program.cs
index 628c966..d660b82 100644
--- a/09 CaesarCodierung/Program.cs	
+++ b/09 CaesarCodierung/Program.cs	
@@ -8,9 +8,9 @@ namespace _09_CaesarCodierung
         {
             string erg = "";
 
-            foreach (char c in s)
+            foreach (char zeichen in s)
             {
-                int codiert = c + shift;
+                int codiert = zeichen + shift;
 
                 if (codiert > 'Z')                // rechts hinausgelaufen
                     codiert -= 26;
@@ -32,9 +32,11 @@ namespace _09_CaesarCodierung
             //Console.WriteLine(CaesarCodierung("ABCZ", -1));
 
             Random wuerfel = new Random();
-            string geheim = CaesarCodierung("HELLOWORLD", wuerfel.Next(1, 25));
+            string geheim = CaesarCodierung("HELLOWORLD", wuerfel.Next(1, 25));  // = "XYAC"
 
-            for (int i = -1; i > -26; i--)
+            //for (int i = -1; i > -26; i--)
+            //    Console.WriteLine(CaesarCodierung(geheim, i));
+            for (int i = 1; i < 26; i++)
                 Console.WriteLine(CaesarCodierung(geheim, i));
         }
     }
diff --git a/10 StreamsIntro/Program.cs b/10 StreamsIntro/Program.cs
index 2420a92..dbfb9da 100644
--- a/10 StreamsIntro/Program.cs	
+++ b/10 StreamsIntro/Program.cs	
@@ -1,4 +1,5 @@
 using System;
+using System.IO;
 
 namespace _10_StreamsIntro
 {
@@ -6,7 +7,31 @@ namespace _10_StreamsIntro
     {
         static void Main(string[] args)
         {
-            Console.WriteLine("Hello World!");
+            //string s = Console.ReadLine();
+            //StreamReader sr = new StreamReader(@"C:\Users\wienkop\source\repos\Prog1_WS2021_22\10 StreamsIntro\Verkaeufe.txt");
+            
+            StreamReader sr = new StreamReader(@"..\..\..\Verkaeufe.txt");
+                // Öffnet die Datei / den Stream
+            string zeile;
+
+            double gesUmsaetze = 0;
+            while (!sr.EndOfStream)
+                // Solange das Dateiende noch nicht erreicht ist
+            {
+                zeile = sr.ReadLine();
+                    // Aus der Datei eine Zeile lesen
+                    // und dann geeignet damit arbeiten
+                //Console.WriteLine(zeile);
+                string[] daten = zeile.Split(' ');
+                int anz = Convert.ToInt32(daten[1]);        // daten[1] ~ 8
+                double preis = Convert.ToDouble(daten[2]);  // daten[2] ~ Einzelpreis
+
+                Console.WriteLine($"{anz, 4} {daten[0],-12} à {preis,5:f2}:  {preis*anz,5:f2}");
+                gesUmsaetze += preis * anz;
+            }
+            Console.WriteLine($"Gesamtumsätze: {gesUmsaetze:f2}");
+            sr.Close();
+                // Datei wieder schließen
         }
     }
 }
diff --git a/10 StreamsIntro/Verkaeufe.txt b/10 StreamsIntro/Verkaeufe.txt
new file mode 100644
index 0000000..0df532f
--- /dev/null
+++ b/10 StreamsIntro/Verkaeufe.txt	
@@ -0,0 +1,3 @@
+Brötchen 8 0,35
+Brot 1 4,50
+Brezen 4 0,60
diff --git a/10 UebgMoRekursion/10 UebgMoRekursion.csproj b/10 UebgMoRekursion/10 UebgMoRekursion.csproj
new file mode 100644
index 0000000..899c56b
--- /dev/null
+++ b/10 UebgMoRekursion/10 UebgMoRekursion.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_10_UebgMoRekursion</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/10 UebgMoRekursion/Program.cs b/10 UebgMoRekursion/Program.cs
new file mode 100644
index 0000000..abf39ef
--- /dev/null
+++ b/10 UebgMoRekursion/Program.cs	
@@ -0,0 +1,23 @@
+using System;
+
+namespace _10_UebgMoRekursion
+{
+    class Program
+    {
+        static int Fakultät(int n)
+        {
+            if (n == 1)
+                return 1;
+            else
+            {
+                int f = n * Fakultät(n - 1);        // F(3) = 3 * F(2) --> 3 * [f = 2 * F(1) => 2]
+                return f;
+            }
+        }
+
+        static void Main(string[] args)
+        {
+            Console.WriteLine(Fakultät(3));
+        }
+    }
+}
diff --git a/10 UebgSpeisekarte_Mo/Program.cs b/10 UebgSpeisekarte_Mo/Program.cs
index 50727d9..4f5e082 100644
--- a/10 UebgSpeisekarte_Mo/Program.cs	
+++ b/10 UebgSpeisekarte_Mo/Program.cs	
@@ -1,12 +1,37 @@
 using System;
+using System.IO;
 
 namespace _10_UebgSpeisekarte_Mo
 {
     class Program
     {
-        static void Speisekarte(string dateiname, params string[] bestellungen)
+        static void Speisekarte(string dateiname, params string[] bestellKuerzeln)
         {
+            using StreamReader sr = new StreamReader(dateiname);
+            string zeile;
+            string[] daten;
+            double summe = 0;
 
+            while (!sr.EndOfStream)
+            {
+                zeile = sr.ReadLine();
+                daten = zeile.Split(';');
+
+                int anz = 0;        // Anzahl der Vorkommnisse des Kürzels
+                                    // in den Bestellungen feststellen
+                foreach (string kuerzel in bestellKuerzeln)
+                 // if (bestellkuerzeln[i] == daten[0])
+                    if (kuerzel == daten[0])    // daten[0] ~ Bestellkuerzel aus der Speisekarte
+                        anz++;
+
+                if (anz > 0)
+                {
+                    double preis = Convert.ToDouble(daten[2]);
+                    Console.WriteLine($"{anz,2} x {daten[1],-30} à {preis,5:f2}     {preis * anz,6:f2}");
+                    summe += preis * anz;
+                }
+            }
+            Console.WriteLine($"Gesamtrechnungsbetrag: {summe:f2}");
         }
         static void Main(string[] args)
         {
diff --git a/10 Wetterdaten/Program.cs b/10 Wetterdaten/Program.cs
index 40125e0..a03d653 100644
--- a/10 Wetterdaten/Program.cs	
+++ b/10 Wetterdaten/Program.cs	
@@ -9,9 +9,10 @@ namespace _10_Wetterdaten
         {
             Console.WriteLine("Tiefsttemperatur:");
             using StreamReader sr = new StreamReader(@"..\..\..\Wetterdaten.txt");
-            sr.ReadLine();
+            sr.ReadLine();          // Erste Zeile überlesen
             double minTemp = 999;
             string minTempDate = "";
+
             while (!sr.EndOfStream)
             {
                 string[] data = sr.ReadLine().Split(';');
@@ -20,12 +21,12 @@ namespace _10_Wetterdaten
                     double temp = Convert.ToDouble(data[3].Replace(".", ","));
                     if (temp < minTemp)
                     {
-                        minTemp = temp;
-                        minTempDate = data[1];
+                        minTemp = temp;         // neue Min.-Temperatur merken
+                        minTempDate = data[1];  // Datum ebenfalls merken
                     }
                 }
             }
-            Console.WriteLine($"{minTemp} am {minTempDate}");
+            Console.WriteLine($"{minTemp} am {minTempDate.Substring(6,2)}.{minTempDate.Substring(4,2)}.{minTempDate.Substring(0,4)}");
         }
     }
 }
diff --git a/Prog1_WS2021_22.sln b/Prog1_WS2021_22.sln
index 942f303..f52adbc 100644
--- a/Prog1_WS2021_22.sln
+++ b/Prog1_WS2021_22.sln
@@ -83,13 +83,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 StringOperationen", "09
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "09 CaesarCodierung", "09 CaesarCodierung\09 CaesarCodierung.csproj", "{663C2A15-A65A-4520-9125-A891A1D8CC4D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 StreamsIntro", "10 StreamsIntro\10 StreamsIntro.csproj", "{86F56655-C344-41A0-AA8A-E8829BFA78C4}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 StreamsIntro", "10 StreamsIntro\10 StreamsIntro.csproj", "{86F56655-C344-41A0-AA8A-E8829BFA78C4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 Wetterdaten", "10 Wetterdaten\10 Wetterdaten.csproj", "{3C562CD5-A7CB-4E31-851F-7B230C03AC33}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 Wetterdaten", "10 Wetterdaten\10 Wetterdaten.csproj", "{3C562CD5-A7CB-4E31-851F-7B230C03AC33}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 UebgSpeisekarte_Mo", "10 UebgSpeisekarte_Mo\10 UebgSpeisekarte_Mo.csproj", "{082C373A-72C6-47A1-B04F-DDB70204DADD}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 UebgSpeisekarte_Mo", "10 UebgSpeisekarte_Mo\10 UebgSpeisekarte_Mo.csproj", "{082C373A-72C6-47A1-B04F-DDB70204DADD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 UebgSpeisekarteDi", "10 UebgSpeisekarteDi\10 UebgSpeisekarteDi.csproj", "{382FB072-0401-4BA5-BE7A-19C8B19EDE35}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "10 UebgSpeisekarteDi", "10 UebgSpeisekarteDi\10 UebgSpeisekarteDi.csproj", "{382FB072-0401-4BA5-BE7A-19C8B19EDE35}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "10 UebgMoRekursion", "10 UebgMoRekursion\10 UebgMoRekursion.csproj", "{803E6BCD-791C-4F4A-BBDD-DF88E6F97967}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -273,6 +275,10 @@ Global
 		{382FB072-0401-4BA5-BE7A-19C8B19EDE35}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{382FB072-0401-4BA5-BE7A-19C8B19EDE35}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{382FB072-0401-4BA5-BE7A-19C8B19EDE35}.Release|Any CPU.Build.0 = Release|Any CPU
+		{803E6BCD-791C-4F4A-BBDD-DF88E6F97967}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{803E6BCD-791C-4F4A-BBDD-DF88E6F97967}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{803E6BCD-791C-4F4A-BBDD-DF88E6F97967}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{803E6BCD-791C-4F4A-BBDD-DF88E6F97967}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
-- 
GitLab