From 128bc7e665015829168e1092b2b2415d1a447fd6 Mon Sep 17 00:00:00 2001 From: Jens Albrecht <jens.albrecht@th-nuernberg.de> Date: Sat, 16 Nov 2024 19:26:49 +0100 Subject: [PATCH] . --- EnthaeltZiffer/EnthaeltZiffer.cs | 39 ++++++++++++++++++++ EnthaeltZiffer/EnthaeltZiffer.csproj | 10 +++++ Exchange/Exchange.cs | 36 ++++++++++++++++++ Exchange/Exchange.csproj | 10 +++++ PiMonteCarlo/PiMonteCarlo.cs | 30 +++++++++++++++ PiMonteCarlo/PiMonteCarlo.csproj | 10 +++++ PotenzRekursiv/PotenzRekursiv.cs | 28 ++++++++++++++ PotenzRekursiv/PotenzRekursiv.csproj | 10 +++++ Uebung06.sln | 55 ++++++++++++++++++++++++++++ WurzelHeron/WurzelHeron.cs | 25 +++++++++++++ WurzelHeron/WurzelHeron.csproj | 10 +++++ ZeichneDreieck/ZeichneDreieck.cs | 41 +++++++++++++++++++++ ZeichneDreieck/ZeichneDreieck.csproj | 10 +++++ 13 files changed, 314 insertions(+) create mode 100644 EnthaeltZiffer/EnthaeltZiffer.cs create mode 100644 EnthaeltZiffer/EnthaeltZiffer.csproj create mode 100644 Exchange/Exchange.cs create mode 100644 Exchange/Exchange.csproj create mode 100644 PiMonteCarlo/PiMonteCarlo.cs create mode 100644 PiMonteCarlo/PiMonteCarlo.csproj create mode 100644 PotenzRekursiv/PotenzRekursiv.cs create mode 100644 PotenzRekursiv/PotenzRekursiv.csproj create mode 100644 Uebung06.sln create mode 100644 WurzelHeron/WurzelHeron.cs create mode 100644 WurzelHeron/WurzelHeron.csproj create mode 100644 ZeichneDreieck/ZeichneDreieck.cs create mode 100644 ZeichneDreieck/ZeichneDreieck.csproj diff --git a/EnthaeltZiffer/EnthaeltZiffer.cs b/EnthaeltZiffer/EnthaeltZiffer.cs new file mode 100644 index 0000000..79f8d85 --- /dev/null +++ b/EnthaeltZiffer/EnthaeltZiffer.cs @@ -0,0 +1,39 @@ +class Program +{ + // Prüft, ob zahl ziffern enthält + // Bei genau1 wird nur dann true zurückgeliefert, + // wenn die ziffer genau 1x enthalten + static bool Enthaelt(int zahl, int ziffer, bool genau1=false) + { + int anzahl = 0; + + while (zahl > 0) + { + int letzteZiffer = zahl % 10; + if (letzteZiffer == ziffer) + anzahl++; + zahl /= 10; + } + + if (genau1) + return anzahl == 1; + else + return anzahl > 0; + } + + // Hauptprogramm + static void Main(string[] args) + { + Console.Write("Untere Grenze eingeben: "); + int a = Convert.ToInt32(Console.ReadLine()); + + Console.Write("Obere Grenze eingeben: "); + int b = Convert.ToInt32(Console.ReadLine()); + + for (int zahl = a; zahl <= b; zahl++) + { + if (Enthaelt(zahl, 7, true)) + Console.WriteLine(zahl); + } + } +} diff --git a/EnthaeltZiffer/EnthaeltZiffer.csproj b/EnthaeltZiffer/EnthaeltZiffer.csproj new file mode 100644 index 0000000..40c60dd --- /dev/null +++ b/EnthaeltZiffer/EnthaeltZiffer.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + +</Project> diff --git a/Exchange/Exchange.cs b/Exchange/Exchange.cs new file mode 100644 index 0000000..c67e47e --- /dev/null +++ b/Exchange/Exchange.cs @@ -0,0 +1,36 @@ +class Program +{ + // Vertauscht die Werte der beiden Parameter + static void Exchange(ref double x, ref double y) + { + double tmp = x; + x = y; + y = tmp; + } + + static void Main() + { + // Hauptprogramm + double zahl1 = 17; + double zahl2 = 23; + + Console.WriteLine($"zahl1 = {zahl1}, zahl2 = {zahl2}"); + Exchange(ref zahl1, ref zahl2); + Console.WriteLine("Exchange!"); + Console.WriteLine($"zahl1 = {zahl1}, zahl2 = {zahl2}"); + + /* + Geht nicht: + + int zahl3 = 12; + int zahl4 = 34; + Exchange(ref zahl3, ref zahl4); + + Grund: Bei Call-by - Reference wird ja die Speicherreferenz übergeben + Damit das funktioniert muss die übergebene Variable vom gleichen Typ + wie der Parameter sein. + Man kann ja nicht einfach mit den Bits einer Integer-Zahl + den Speicher einer Double-Variablen überschreiben. + */ + } +} \ No newline at end of file diff --git a/Exchange/Exchange.csproj b/Exchange/Exchange.csproj new file mode 100644 index 0000000..40c60dd --- /dev/null +++ b/Exchange/Exchange.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + +</Project> diff --git a/PiMonteCarlo/PiMonteCarlo.cs b/PiMonteCarlo/PiMonteCarlo.cs new file mode 100644 index 0000000..6f29598 --- /dev/null +++ b/PiMonteCarlo/PiMonteCarlo.cs @@ -0,0 +1,30 @@ +class Program +{ + static double Pi(int n = 1000000) + { + Random zufall = new Random(); // Anlegen des Zufallsgenerators; einmalig! + + int drin = 0; // Anzahl der Treffer im Einheitskreis + for (int i = 0; i < n; i++) + { + // Bestimmung der x und y Koordinate + double x = zufall.NextDouble(); + double y = zufall.NextDouble(); + + // Pythagoras-Test: Hypothenuse aus x^2 und y^2 kürzer als 1? + if ((x * x + y * y) <= 1) + drin++; + } + + // Pi = 4 * Treffer/alle Versuche + return 4.0 * drin / n; + } + + // Hauptprogramm + static void Main() + { + Console.WriteLine("Berechnung der Zahl PI:"); + double pi = Pi(100000); + Console.WriteLine($"Pi: {pi} - {Math.PI} = {pi - Math.PI}"); + } +} diff --git a/PiMonteCarlo/PiMonteCarlo.csproj b/PiMonteCarlo/PiMonteCarlo.csproj new file mode 100644 index 0000000..40c60dd --- /dev/null +++ b/PiMonteCarlo/PiMonteCarlo.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + +</Project> diff --git a/PotenzRekursiv/PotenzRekursiv.cs b/PotenzRekursiv/PotenzRekursiv.cs new file mode 100644 index 0000000..fff4a6e --- /dev/null +++ b/PotenzRekursiv/PotenzRekursiv.cs @@ -0,0 +1,28 @@ +// Iterativ +static double Potenz(double x, int n) +{ + double potenz = 1; + + for (int i = 1; i <= n; i++) + potenz *= x; + + return potenz; +} + +// Rekursiv +static double PotenzRek(double x, int n) +{ + if (n == 0) + return 1; + else + return x * PotenzRek(x, n - 1); +} + +// Hauptprogramm zum Test: +Console.Write("Basis eingeben: "); +double basis = Convert.ToDouble(Console.ReadLine()); +Console.Write("Exponent eingeben: "); +int exponent = Convert.ToInt32(Console.ReadLine()); + +Console.WriteLine($"{basis} hoch {exponent}: {PotenzRek(basis, exponent)}"); + diff --git a/PotenzRekursiv/PotenzRekursiv.csproj b/PotenzRekursiv/PotenzRekursiv.csproj new file mode 100644 index 0000000..40c60dd --- /dev/null +++ b/PotenzRekursiv/PotenzRekursiv.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net6.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + +</Project> diff --git a/Uebung06.sln b/Uebung06.sln new file mode 100644 index 0000000..cdbca1f --- /dev/null +++ b/Uebung06.sln @@ -0,0 +1,55 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32929.385 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EnthaeltZiffer", "EnthaeltZiffer\EnthaeltZiffer.csproj", "{BFC9A5F0-EC5C-4E26-AA5D-351632C2D56C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PotenzRekursiv", "PotenzRekursiv\PotenzRekursiv.csproj", "{74A19260-1005-4144-9F72-7CCD6B91F203}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Exchange", "Exchange\Exchange.csproj", "{9C603C35-CF22-4BE7-8826-F72BAD75E94E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PiMonteCarlo", "PiMonteCarlo\PiMonteCarlo.csproj", "{83878293-F2D5-4391-A6FE-3E993031EECE}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ZeichneDreieck", "ZeichneDreieck\ZeichneDreieck.csproj", "{10A78230-219C-4836-9597-CB3BE2D8BFDC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WurzelHeron", "WurzelHeron\WurzelHeron.csproj", "{66111554-B6B2-4A76-8CBE-FAAE00858290}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {BFC9A5F0-EC5C-4E26-AA5D-351632C2D56C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BFC9A5F0-EC5C-4E26-AA5D-351632C2D56C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BFC9A5F0-EC5C-4E26-AA5D-351632C2D56C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BFC9A5F0-EC5C-4E26-AA5D-351632C2D56C}.Release|Any CPU.Build.0 = Release|Any CPU + {74A19260-1005-4144-9F72-7CCD6B91F203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {74A19260-1005-4144-9F72-7CCD6B91F203}.Debug|Any CPU.Build.0 = Debug|Any CPU + {74A19260-1005-4144-9F72-7CCD6B91F203}.Release|Any CPU.ActiveCfg = Release|Any CPU + {74A19260-1005-4144-9F72-7CCD6B91F203}.Release|Any CPU.Build.0 = Release|Any CPU + {9C603C35-CF22-4BE7-8826-F72BAD75E94E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9C603C35-CF22-4BE7-8826-F72BAD75E94E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9C603C35-CF22-4BE7-8826-F72BAD75E94E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9C603C35-CF22-4BE7-8826-F72BAD75E94E}.Release|Any CPU.Build.0 = Release|Any CPU + {83878293-F2D5-4391-A6FE-3E993031EECE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {83878293-F2D5-4391-A6FE-3E993031EECE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {83878293-F2D5-4391-A6FE-3E993031EECE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {83878293-F2D5-4391-A6FE-3E993031EECE}.Release|Any CPU.Build.0 = Release|Any CPU + {10A78230-219C-4836-9597-CB3BE2D8BFDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10A78230-219C-4836-9597-CB3BE2D8BFDC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10A78230-219C-4836-9597-CB3BE2D8BFDC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10A78230-219C-4836-9597-CB3BE2D8BFDC}.Release|Any CPU.Build.0 = Release|Any CPU + {66111554-B6B2-4A76-8CBE-FAAE00858290}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {66111554-B6B2-4A76-8CBE-FAAE00858290}.Debug|Any CPU.Build.0 = Debug|Any CPU + {66111554-B6B2-4A76-8CBE-FAAE00858290}.Release|Any CPU.ActiveCfg = Release|Any CPU + {66111554-B6B2-4A76-8CBE-FAAE00858290}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {F8BD3E6E-9C6F-41DF-B3D7-EC608E0687C5} + EndGlobalSection +EndGlobal diff --git a/WurzelHeron/WurzelHeron.cs b/WurzelHeron/WurzelHeron.cs new file mode 100644 index 0000000..a8a8e92 --- /dev/null +++ b/WurzelHeron/WurzelHeron.cs @@ -0,0 +1,25 @@ +class Heron +{ + // Funktion zur Berechnung der Wurzel (Square Root) nach Heron + static double Sqrt(double x) + { + // Startwert + double wurzel = x / 2; + + // Heron-Formel + while (Math.Abs(x - wurzel * wurzel) > 1e-12) + wurzel = 0.5 * (wurzel + x / wurzel); + + return wurzel; + } + + static void Main(string[] args) + { + Console.WriteLine("Wurzelberechnung mit dem Heronverfahren:"); + for (double d = 0; d <= 100; d += 10) + { + Console.WriteLine($"{d,4} | {Sqrt(d),8:F5} | {Math.Sqrt(d),8:F5} | {Math.Sqrt(d) - Sqrt(d),12}"); + } + Console.WriteLine(); + } +} diff --git a/WurzelHeron/WurzelHeron.csproj b/WurzelHeron/WurzelHeron.csproj new file mode 100644 index 0000000..206b89a --- /dev/null +++ b/WurzelHeron/WurzelHeron.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net8.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + +</Project> diff --git a/ZeichneDreieck/ZeichneDreieck.cs b/ZeichneDreieck/ZeichneDreieck.cs new file mode 100644 index 0000000..80d5044 --- /dev/null +++ b/ZeichneDreieck/ZeichneDreieck.cs @@ -0,0 +1,41 @@ +class Program +{ + static void ZeichneDreieck(int n, char c = '*', bool zentriert = false) + { + // Man könnte jetzt die beiden Code-Blöcke auch in einen zusammenfassen, + // weil die Schleifen ja im Prinzip das Gleiche machen. + // Versuchen Sie mal, den Code umzustellen! + if (!zentriert) + { + for (int i = 1; i <= n; i++) + { + for (int j = 1; j <= i; j++) + Console.Write(c); + + Console.WriteLine(); + } + } + else // zentriert + { + for (int i = 1, leer = n - 1; i <= n; i++, leer--) + { + // Leerzeichen vorher einfügen + for (int j = 1; j <= leer; j++) + Console.Write(' '); + + for (int j = 1; j <= 2 * i - 1; j++) + Console.Write(c); + + Console.WriteLine(); + } + } + } + + // Hauptprogramm + static void Main() + { + ZeichneDreieck(6, '*'); + ZeichneDreieck(3); + ZeichneDreieck(5, '#', true); + } +} diff --git a/ZeichneDreieck/ZeichneDreieck.csproj b/ZeichneDreieck/ZeichneDreieck.csproj new file mode 100644 index 0000000..206b89a --- /dev/null +++ b/ZeichneDreieck/ZeichneDreieck.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net8.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + </PropertyGroup> + +</Project> -- GitLab