From 912d23a8d0a3d69dd1da8856b47efe83c84ee9d4 Mon Sep 17 00:00:00 2001
From: wienkop <uwe.wienkop@th-nuernberg.de>
Date: Tue, 19 Oct 2021 11:14:51 +0200
Subject: [PATCH] Woche 03 - Schleifen

---
 02 Fallunterscheidungen/Program.cs            | 28 ++++++++--
 03 IntArithmetik/03 IntArithmetik.csproj      |  9 +++
 03 IntArithmetik/Program.cs                   | 46 ++++++++++++++++
 .../03 IntArithmetik_Di.csproj                |  9 +++
 03 IntArithmetik_Di/Program.cs                | 55 +++++++++++++++++++
 03 Primzahltest/03 Primzahltest.csproj        |  9 +++
 03 Primzahltest/Program.cs                    | 38 +++++++++++++
 .../03 Quadratzahlen_bis.csproj               |  9 +++
 03 Quadratzahlen_bis/Program.cs               | 21 +++++++
 03 Quersumme/03 Quersumme.csproj              |  9 +++
 03 Quersumme/Program.cs                       | 23 ++++++++
 03 SchleifenIntro/03 SchleifenIntro.csproj    |  9 +++
 03 SchleifenIntro/Program.cs                  | 32 +++++++++++
 Prog1_WS2021_22.sln                           | 42 +++++++++++++-
 14 files changed, 330 insertions(+), 9 deletions(-)
 create mode 100644 03 IntArithmetik/03 IntArithmetik.csproj
 create mode 100644 03 IntArithmetik/Program.cs
 create mode 100644 03 IntArithmetik_Di/03 IntArithmetik_Di.csproj
 create mode 100644 03 IntArithmetik_Di/Program.cs
 create mode 100644 03 Primzahltest/03 Primzahltest.csproj
 create mode 100644 03 Primzahltest/Program.cs
 create mode 100644 03 Quadratzahlen_bis/03 Quadratzahlen_bis.csproj
 create mode 100644 03 Quadratzahlen_bis/Program.cs
 create mode 100644 03 Quersumme/03 Quersumme.csproj
 create mode 100644 03 Quersumme/Program.cs
 create mode 100644 03 SchleifenIntro/03 SchleifenIntro.csproj
 create mode 100644 03 SchleifenIntro/Program.cs

diff --git a/02 Fallunterscheidungen/Program.cs b/02 Fallunterscheidungen/Program.cs
index 48bf272..cc77957 100644
--- a/02 Fallunterscheidungen/Program.cs	
+++ b/02 Fallunterscheidungen/Program.cs	
@@ -13,10 +13,9 @@ namespace _02_Fallunterscheidungen
             {
                 kleiner = x;
             }
-            else 
-            {
+            else
                 kleiner = y;
-            }
+
             Console.WriteLine($"Die kleinere Zahl ist {kleiner}");
 
             if (x == 3)
@@ -40,7 +39,7 @@ namespace _02_Fallunterscheidungen
             int t = -5;
             if (t < 0)
                 Console.WriteLine("ganz schön kalt");
-            else if (t > 24)
+            else if (t > 24)   // else: t >= 0
                 Console.WriteLine("Summertime");
             else
                 Console.WriteLine("weder warm noch kalt");
@@ -69,10 +68,27 @@ namespace _02_Fallunterscheidungen
                 Console.WriteLine("ganz schön kalt");
             if (t >= 0 && t <= 24)
                 Console.WriteLine("weder warm noch kalt");
-            if (t >24 )
+            if (t > 24)
                 Console.WriteLine("Summertime");
 
+            // && verknüpft zwei Wahrheitswerte (bool)
+            //    genau dann wahr, wenn BEIDE wahr sind
+            //       true  && false  --> false
+            //       false && true   --> false
+            //    Short-cut evaluation: zweiter Ausdruck wird nur dann
+            //       ausgewertet, wenn der erste wahr ist
+
+            bool b = t < 24 && t > 3;
+
+
+            if (x == 3 || x == 4)
+                Console.WriteLine("x ist drei oder vier");
+            // || genau dann wahr, wenn mindestens einer der beiden
+            //    Wahrheitswerte wahr ist
+            //       true || false    --> true
+            //    2. Ausdruck wird nur dann ausgewertet, wenn der erste
+            //       falsch ist
 
         }
     }
-}
+}
\ No newline at end of file
diff --git a/03 IntArithmetik/03 IntArithmetik.csproj b/03 IntArithmetik/03 IntArithmetik.csproj
new file mode 100644
index 0000000..218adb1
--- /dev/null
+++ b/03 IntArithmetik/03 IntArithmetik.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_03_IntArithmetik</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/03 IntArithmetik/Program.cs b/03 IntArithmetik/Program.cs
new file mode 100644
index 0000000..d016117
--- /dev/null
+++ b/03 IntArithmetik/Program.cs	
@@ -0,0 +1,46 @@
+using System;
+
+namespace _03_IntArithmetik
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            // 5:2   --> 2 R 1
+            // 5 / 2 --> 2
+            // 5 % 2 --> 1 (Rest)
+
+            int zahl0 = 123;     // 1 * 10^2  + 2 * 10^1  +  3 * 10^0
+            int einer = zahl0 % 10;
+            int hunderter = zahl0 / 100;
+            int zehner = zahl0 / 10 % 10;   // 123 / 10 --> 12 % 10 --> 2
+
+            // Listen Sie alle dreistelligen Zahlen auf,
+            // die durch alle ihre Ziffern teilbar sind
+
+            // https://openbook.rheinwerk-verlag.de/visual_csharp_2012/
+
+
+            // 1. for-Schleife von 100 .. 999
+            int anzAusgaben = 0;
+            for (int zahl = 100 ; zahl < 1000; zahl++)
+            {
+            // 2. für jede Stelle: Var deklarieren und Ziffer zuweisen
+                int e = zahl % 10;
+                int z = zahl / 10 % 10;
+                int h = zahl / 100;
+
+                // 3. if: 1) keine Nuller und 2) Teilbarkeit
+                //      ggf. ausgeben
+                if (e != 0 && z != 0 &&
+                    zahl % e == 0 && zahl % z == 0 && zahl % h == 0)
+                {
+                    Console.Write($"{zahl}     ");
+                    anzAusgaben++;
+                    if (anzAusgaben%10 == 0)
+                        Console.WriteLine();
+                }
+            }
+        }
+    }
+}
diff --git a/03 IntArithmetik_Di/03 IntArithmetik_Di.csproj b/03 IntArithmetik_Di/03 IntArithmetik_Di.csproj
new file mode 100644
index 0000000..2daff2a
--- /dev/null
+++ b/03 IntArithmetik_Di/03 IntArithmetik_Di.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_03_IntArithmetik_Di</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/03 IntArithmetik_Di/Program.cs b/03 IntArithmetik_Di/Program.cs
new file mode 100644
index 0000000..c7987d7
--- /dev/null
+++ b/03 IntArithmetik_Di/Program.cs	
@@ -0,0 +1,55 @@
+using System;
+
+namespace _03_IntArithmetik_Di
+{
+    class Program
+    {
+        //// 7 : 2 = 3 R 1
+        //Console.WriteLine(7/2);
+        //Console.WriteLine(7%2);
+
+        //// 123
+        //Console.WriteLine(123 % 10);
+        //Console.WriteLine(123 / 100);
+        //Console.WriteLine(123 / 10 % 10);
+
+        //// 1234
+        //Console.WriteLine(1234/10%100);
+        static void Main(string[] args)
+        {
+            Console.WriteLine("Alle dreistelligen Zahlen, die durch alle ihre Ziffern teilbar sind");
+
+            // 1. Schleife von 100 .. 999
+            // 2. Dritte Stelle extrahieren
+            // 2b. Test, ob Zahl durch dritte Stelle teilbar ist
+            // 3. Zweite Stelle ...
+            // 4. Erste Stelle
+
+            int anz = 0;
+            // 1. Schleife von 100 .. 999
+            for (int zahl = 100; zahl < 1000; zahl++)
+            {
+                // 2. Einer, Zehner, Hunderter extrahieren
+                int e = zahl % 10;
+                int z = zahl / 10 % 10;
+                int h = zahl / 100;
+
+                // 3. Test
+                if (e != 0 && z != 0 && 
+                        zahl % e == 0 && zahl % z == 0 && zahl % h == 0)
+                {
+                    // 4. ggf. Zahl ausgeben
+                    anz++;
+                    //if (anz % 5 == 0)
+                    //    Console.WriteLine($"{zahl}     ");
+                    //else
+                    //    Console.Write($"{zahl}     ");
+
+                    Console.Write($"{zahl}     ");
+                    if (anz % 5 == 0)
+                        Console.WriteLine();
+                }
+            }
+        }
+    }
+}
diff --git a/03 Primzahltest/03 Primzahltest.csproj b/03 Primzahltest/03 Primzahltest.csproj
new file mode 100644
index 0000000..e45a87a
--- /dev/null
+++ b/03 Primzahltest/03 Primzahltest.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_03_Primzahltest</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/03 Primzahltest/Program.cs b/03 Primzahltest/Program.cs
new file mode 100644
index 0000000..1d2e2f0
--- /dev/null
+++ b/03 Primzahltest/Program.cs	
@@ -0,0 +1,38 @@
+using System;
+
+namespace _03_Primzahltest
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            DateTime startzeit = DateTime.Now;
+            int anzPrimzahlen = 1;
+
+            for (int zahl = 3; zahl < 100000; zahl+= 2)
+            {
+                bool zahlIstPrimzahl = true;
+                int teilergrenze = (int) Math.Sqrt(zahl);
+                for (int teiler = 3; /* n == 0 && */ teiler <= teilergrenze; teiler+=2)
+                {
+                    //Console.WriteLine($"Teiler: {teiler,2}:  {primZahl/teiler}  {primZahl%teiler}");
+                    if (zahl % teiler == 0)
+                    {
+                        //Console.WriteLine($"{primZahl} ist durch {teiler} teilbar ==> keine Primzahl");
+                        zahlIstPrimzahl = false;
+                        break;
+                    }
+                    // HIER KEIN ELSE!!!
+                }
+                if (zahlIstPrimzahl)
+                    anzPrimzahlen++;
+                    //Console.WriteLine($"{zahl} ist eine Primzahl");
+                //else
+                //    Console.WriteLine($"{zahl} ist keine Primzahl");
+
+            }
+            Console.WriteLine($"{anzPrimzahlen} Primzahlen gefunden"); // 9592
+            Console.WriteLine($"Benötigte Rechenzeit: {(DateTime.Now-startzeit).TotalMilliseconds} ms.");
+        }
+    }
+}
diff --git a/03 Quadratzahlen_bis/03 Quadratzahlen_bis.csproj b/03 Quadratzahlen_bis/03 Quadratzahlen_bis.csproj
new file mode 100644
index 0000000..855467f
--- /dev/null
+++ b/03 Quadratzahlen_bis/03 Quadratzahlen_bis.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_03_Quadratzahlen_bis</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/03 Quadratzahlen_bis/Program.cs b/03 Quadratzahlen_bis/Program.cs
new file mode 100644
index 0000000..4ab71ef
--- /dev/null
+++ b/03 Quadratzahlen_bis/Program.cs	
@@ -0,0 +1,21 @@
+using System;
+
+namespace _03_Quadratzahlen_bis
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            Console.WriteLine("Quadratzahlen bis ...");
+            //int grenze = Convert.ToInt32(Console.ReadLine());
+            int grenze = 100;
+
+            int zahl = 1;
+            while (zahl * zahl <= grenze)
+            {
+                Console.WriteLine($"{zahl} --> {zahl*zahl}");
+                zahl++;
+            }    
+        }
+    }
+}
diff --git a/03 Quersumme/03 Quersumme.csproj b/03 Quersumme/03 Quersumme.csproj
new file mode 100644
index 0000000..d84fe56
--- /dev/null
+++ b/03 Quersumme/03 Quersumme.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_03_Quersumme</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/03 Quersumme/Program.cs b/03 Quersumme/Program.cs
new file mode 100644
index 0000000..560ebda
--- /dev/null
+++ b/03 Quersumme/Program.cs	
@@ -0,0 +1,23 @@
+using System;
+
+namespace _03_Quersumme
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            int zahl = 1234567;
+
+            int qsumme = 0;
+
+            while (zahl > 0)
+            {
+                Console.WriteLine(zahl);
+                int letzteZiffer = zahl % 10;
+                qsumme += letzteZiffer;
+                zahl /= 10;
+            }
+            Console.WriteLine($"Die Quersumme beträgt: {qsumme}");
+        }
+    }
+}
diff --git a/03 SchleifenIntro/03 SchleifenIntro.csproj b/03 SchleifenIntro/03 SchleifenIntro.csproj
new file mode 100644
index 0000000..cf5f52f
--- /dev/null
+++ b/03 SchleifenIntro/03 SchleifenIntro.csproj	
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <RootNamespace>_03_SchleifenIntro</RootNamespace>
+  </PropertyGroup>
+
+</Project>
diff --git a/03 SchleifenIntro/Program.cs b/03 SchleifenIntro/Program.cs
new file mode 100644
index 0000000..07b48b4
--- /dev/null
+++ b/03 SchleifenIntro/Program.cs	
@@ -0,0 +1,32 @@
+using System;
+
+namespace _03_SchleifenIntro
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            //int i;
+            for (int i = 0; i < 5; i++)
+                // int i = 0: Definiert eine neue int-Var i und initialisiert diese mit 0
+                // i<5: Durchlaufbedingung, Test vor jedem Durchlauf, auch dem ERSTEN
+                // { } Schleifenrumpf: Die zu wiederholenden Anweisungen
+                // i++: Weiterschalten i++  --> i = i+1
+                // weiter bei i<5
+            {
+                Console.WriteLine("Hello World!");
+            }
+            //Console.WriteLine(i);
+
+
+            int k = 0;
+            while (k<5)
+            {
+                Console.WriteLine("Hallo");
+                k++;
+            }
+
+
+        }
+    }
+}
diff --git a/Prog1_WS2021_22.sln b/Prog1_WS2021_22.sln
index c1b648b..995f824 100644
--- a/Prog1_WS2021_22.sln
+++ b/Prog1_WS2021_22.sln
@@ -9,11 +9,23 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "01 Hallo", "01 Hallo\01 Hal
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "02 Rechteck", "02 Rechteck\02 Rechteck.csproj", "{76322CB6-249B-428C-9847-E551E25F38DB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "02 Rechteck_Di", "02 Rechteck_Di\02 Rechteck_Di.csproj", "{857CABA6-FCAE-4E48-8357-02B08F87BE49}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "02 Rechteck_Di", "02 Rechteck_Di\02 Rechteck_Di.csproj", "{857CABA6-FCAE-4E48-8357-02B08F87BE49}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "02 Ausgabeformatierung", "02 Ausgabeformatierung\02 Ausgabeformatierung.csproj", "{27FA1463-A81B-46A4-A331-457D973BA70C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "02 Ausgabeformatierung", "02 Ausgabeformatierung\02 Ausgabeformatierung.csproj", "{27FA1463-A81B-46A4-A331-457D973BA70C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "02 Fallunterscheidungen", "02 Fallunterscheidungen\02 Fallunterscheidungen.csproj", "{3370BE4E-7EF8-4ABB-949D-62CA9FA5CDA7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "02 Fallunterscheidungen", "02 Fallunterscheidungen\02 Fallunterscheidungen.csproj", "{3370BE4E-7EF8-4ABB-949D-62CA9FA5CDA7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03 SchleifenIntro", "03 SchleifenIntro\03 SchleifenIntro.csproj", "{5C715673-820D-4FC5-B8C6-EEE0890713EE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03 Primzahltest", "03 Primzahltest\03 Primzahltest.csproj", "{958EC31B-7CFC-470B-87AD-2AEB00E816A5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03 IntArithmetik", "03 IntArithmetik\03 IntArithmetik.csproj", "{9CB8537D-D35E-4718-9258-12857B8B7411}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03 IntArithmetik_Di", "03 IntArithmetik_Di\03 IntArithmetik_Di.csproj", "{EADEA381-506F-41FF-99EC-487D4D3B6114}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03 Quersumme", "03 Quersumme\03 Quersumme.csproj", "{C2D51C5D-AFDC-4A8A-9393-904A1CAA2CCC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "03 Quadratzahlen_bis", "03 Quadratzahlen_bis\03 Quadratzahlen_bis.csproj", "{F492AB76-864B-45FD-9BF2-36B9CA24987D}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -45,6 +57,30 @@ Global
 		{3370BE4E-7EF8-4ABB-949D-62CA9FA5CDA7}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{3370BE4E-7EF8-4ABB-949D-62CA9FA5CDA7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3370BE4E-7EF8-4ABB-949D-62CA9FA5CDA7}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5C715673-820D-4FC5-B8C6-EEE0890713EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5C715673-820D-4FC5-B8C6-EEE0890713EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5C715673-820D-4FC5-B8C6-EEE0890713EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5C715673-820D-4FC5-B8C6-EEE0890713EE}.Release|Any CPU.Build.0 = Release|Any CPU
+		{958EC31B-7CFC-470B-87AD-2AEB00E816A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{958EC31B-7CFC-470B-87AD-2AEB00E816A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{958EC31B-7CFC-470B-87AD-2AEB00E816A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{958EC31B-7CFC-470B-87AD-2AEB00E816A5}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9CB8537D-D35E-4718-9258-12857B8B7411}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9CB8537D-D35E-4718-9258-12857B8B7411}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9CB8537D-D35E-4718-9258-12857B8B7411}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9CB8537D-D35E-4718-9258-12857B8B7411}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EADEA381-506F-41FF-99EC-487D4D3B6114}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EADEA381-506F-41FF-99EC-487D4D3B6114}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EADEA381-506F-41FF-99EC-487D4D3B6114}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EADEA381-506F-41FF-99EC-487D4D3B6114}.Release|Any CPU.Build.0 = Release|Any CPU
+		{C2D51C5D-AFDC-4A8A-9393-904A1CAA2CCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{C2D51C5D-AFDC-4A8A-9393-904A1CAA2CCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{C2D51C5D-AFDC-4A8A-9393-904A1CAA2CCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{C2D51C5D-AFDC-4A8A-9393-904A1CAA2CCC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F492AB76-864B-45FD-9BF2-36B9CA24987D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F492AB76-864B-45FD-9BF2-36B9CA24987D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F492AB76-864B-45FD-9BF2-36B9CA24987D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F492AB76-864B-45FD-9BF2-36B9CA24987D}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
-- 
GitLab