Skip to content
Snippets Groups Projects
Commit ef9838b5 authored by Jens Albrecht's avatar Jens Albrecht
Browse files

.

parent ffa4b3e0
No related branches found
No related tags found
No related merge requests found
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
namespace Uebung;
enum Operation { Add, Sub, Mult, Div }
class Program
{
static double Berechne(Operation op, double x, double y)
{
double ergebnis;
switch (op)
{
case Operation.Add:
ergebnis = x + y;
break;
case Operation.Sub:
ergebnis = x - y;
break;
case Operation.Mult:
ergebnis = x * y;
break;
default: // Operator.Div:
ergebnis = x / y;
break;
}
return ergebnis;
}
static void Main(string[] args)
{
Console.WriteLine($"Berechne(Add, 5, 4) = {Berechne(Operation.Add, 5, 4)}");
Console.WriteLine($"Berechne(Sub, 5, 4) = {Berechne(Operation.Sub, 5, 4)}");
Console.WriteLine($"Berechne(Mult, 5, 4) = {Berechne(Operation.Mult, 5, 4)}");
Console.WriteLine($"Berechne(Div, 5, 4) = {Berechne(Operation.Div, 5, 4)}");
}
}

static bool MagicQuadrat(int[,] a)
{
if (a.GetLength(0) != a.GetLength(1))
return false;
int diagSum = 0;
for (int i = 0; i < a.GetLength(0); i++)
diagSum += a[i, i];
for (int i = 0; i < a.GetLength(0); i++)
{
int rowSum = 0;
for (int j = 0; j < a.GetLength(1); j++)
rowSum += a[i, j];
if (diagSum != rowSum)
return false;
}
return true;
}
int[,] testArray1 = { { 8, 1, 6 }, { 3, 5, 7 }, { 4, 9, 2 } };
int[,] testArray2 = { { 8, 1, 6 }, { 3, 5, 7 }, { 4, 9, 3 } };
int[,] testArray3 = { { 8, 1, 6 }, { 3, 5, 7 } };
Console.WriteLine(MagicQuadrat(testArray1));
Console.WriteLine(MagicQuadrat(testArray2));
Console.WriteLine(MagicQuadrat(testArray3));
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
static int Millionaer(double betrag, double zins)
{
int jahre = 0;
while (betrag < 1000000)
{
betrag += betrag * (zins/100);
jahre++;
// Debug-Ausgabe
Console.WriteLine($"Betrag nach {jahre} Jahren: {betrag:f2}");
}
return jahre;
}
Console.WriteLine(Millionaer(1000, 3));
// Klasse Abteilung
namespace Uebung12;
class Abteilung
{
string name; // Name der Abteilung
Person[] mitarbeiter; // Array mit Mitarbeitern
// Parameter Konstruktor
public Abteilung(string name, params Person[] mitarbeiter)
{
this.name = name;
this.mitarbeiter = mitarbeiter;
}
// Konstruktor für Erzeugung aus Datei
public Abteilung(string dateiname)
{
StreamReader sr = new StreamReader(dateiname);
// Abteilungsnamen einlesen
string? zeile = sr.ReadLine() ?? "";
string[] daten = zeile.Split(':');
this.name = daten[0].Trim();
// Mitarbeiterfeld anlegen
int anzahl = Convert.ToInt32(daten[1]);
this.mitarbeiter = new Person[anzahl];
// Mitarbeiter einlesen
int i = 0;
while ((zeile = sr.ReadLine()) != null)
{
daten = zeile.Split(';', ',');
int persnr = Convert.ToInt32(daten[0]);
string vorname = daten[2].Trim();
string nachname = daten[1].Trim();
string email = daten[3].Trim();
this.mitarbeiter[i++] = new Person(persnr, vorname, nachname, email);
}
}
public override string ToString()
{
return name + " (" + mitarbeiter.Length + ")";
}
public void Ausgabe()
{
// Ausgabe des Abteilungsnamens - es wird implizit ToString() aufgerufen
Console.WriteLine(this);
// Ausgabe der Mitarbeiter
for (int i = 0; i < mitarbeiter.Length; i++)
Console.WriteLine(mitarbeiter[i]);
}
public Person? Suche(string email)
{
for (int i = 0; i < mitarbeiter.Length; i++)
{
if (mitarbeiter[i].GetEmail() == email)
return mitarbeiter[i];
}
return null;
}
}
namespace Uebung12;
// Hauptprogramm in Program.cs
class Person
{
int persnr;
string vorname;
string nachname;
string email;
// Parameter Konstruktur
public Person(int persnr, string vorname, string nachname, string email)
{
if (vorname == null || vorname.Length < 2 ||
nachname == null || nachname.Length < 2)
throw new ArgumentException("Ungültiger Name");
else if (!EmailGueltig(email))
throw new ArgumentException("Ungültige Email");
this.persnr = persnr;
this.vorname = vorname;
this.nachname = nachname;
this.email = email;
}
#region Methoden
// Getter für Name
public string GetName()
{
return nachname + ", " + vorname;
}
// Getter und Setter für Email
public string GetEmail() => email; // ist das gleiche wie nur return email;
public void SetEmail(string newEmail)
{
if (!EmailGueltig(newEmail)) // Aufgabe 11.3
throw new ArgumentException("Ungültige Email");
this.email = newEmail;
}
// ToString-Methode mit override
public override string ToString()
{
return $"{persnr}: {GetName()}; {email}";
}
// Gültigkeitstest für Email. Achtung: static!
// Die Methode überprüft nur für einen String, ob er eine gültige Email-Adresse darstellt.
// Als Objekt-Methode geht das nicht, denn wir wollen ja gar kein Objekt haben,
// das eine ungültige Adresse hat!
public static bool EmailGueltig(string email)
{
if (email == null || email.Length == 0)
return false;
// erstes Zeichen ist Buchstabe
if (!Char.IsLetter(email[0]))
return false;
// Merker für @ und . danach
bool atGefunden = false;
bool pktNachAtGefunden = false;
// Schleife über email
foreach (char c in email)
{
if (c == ' ')
return false;
else if (c == '@')
atGefunden = true;
else if (atGefunden && c == '.')
pktNachAtGefunden = true;
}
return pktNachAtGefunden;
}
#endregion
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
namespace Uebung12;
// Test-Klasse für Abteilung
class Program
{
static void Main(string[] args)
{
// Main aus letzter Übung
Person person = new Person(12, "Anne", "Meier", "ameier@thn.de");
Console.WriteLine(person.GetName());
Console.WriteLine(person);
person.SetEmail("ameier@th-nuernberg.de"); // Ändern der Email
Console.WriteLine(person);
// Test für Anlage einer Abteilung
Person[] mitarbeiterPR = new Person[6];
mitarbeiterPR[0] = new Person(13, "Donald", "Duck", "dd@entenhausen.com");
mitarbeiterPR[1] = new Person(21, "Gustav", "Gans", "gg@entenhausen.com");
mitarbeiterPR[2] = new Person(37, "Micky", "Maus", "mm@entenhausen.com");
mitarbeiterPR[3] = new Person(42, "Duffy", "Duck", "dd@warner.com");
mitarbeiterPR[4] = new Person(76, "Silvester", "Cat", "silly@cat.org");
mitarbeiterPR[5] = new Person(88, "Tweety", "Bird", "birdy@twitter.com");
Abteilung pr = new Abteilung("Public Relations", mitarbeiterPR);
Console.WriteLine();
Console.WriteLine(pr);
Console.WriteLine();
pr.Ausgabe();
Console.WriteLine();
// Test-Emails für Suche
string[] emails = { "mm@entenhausen.com", "dsmith@th-nuernberg.de",
"ahuber@thn.de", "silly@cat.org" };
Console.WriteLine();
Console.WriteLine("Suche:");
foreach (string email in emails)
{
Person? p = pr.Suche(email);
if (p != null)
Console.WriteLine("Person gefunden: " + p);
else
Console.WriteLine("Person zu email " + email + " nicht gefunden");
}
Console.WriteLine();
// Einlesen einer Abteilung aus Datei:
string dateiname = "Marketing.txt";
// Damit's auf Windows und Unix klappt verwenden wir hier Path.Combine
// Dabei werden die Namen mit Path.PathSeparator (\ auf Windows, / auf Unix) verknüpft
string dateipfad = Path.Combine("..", "..", "..", dateiname);
Console.WriteLine("Öffne Datei: " + dateipfad);
Abteilung marketing = new Abteilung(dateipfad);
marketing.Ausgabe();
Console.WriteLine();
}
}
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 25.0.1706.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PersonAbteilung", "PersonAbteilung\PersonAbteilung.csproj", "{6811F6BC-B3F5-4894-A64D-A026D1FCECCF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnumRechenOperationen", "EnumRechenOperationen\EnumRechenOperationen.csproj", "{C7625BE2-6E42-4EEB-9BDA-7FDA8986A4C3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagischesQuadrat", "MagischesQuadrat\MagischesQuadrat.csproj", "{6DD50361-EE2D-4AEF-A307-EE9ADA930199}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Millionaer", "Millionaer\Millionaer.csproj", "{088F39F4-2753-480A-A633-828AEC9D1DD5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6811F6BC-B3F5-4894-A64D-A026D1FCECCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6811F6BC-B3F5-4894-A64D-A026D1FCECCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6811F6BC-B3F5-4894-A64D-A026D1FCECCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6811F6BC-B3F5-4894-A64D-A026D1FCECCF}.Release|Any CPU.Build.0 = Release|Any CPU
{C7625BE2-6E42-4EEB-9BDA-7FDA8986A4C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7625BE2-6E42-4EEB-9BDA-7FDA8986A4C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7625BE2-6E42-4EEB-9BDA-7FDA8986A4C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7625BE2-6E42-4EEB-9BDA-7FDA8986A4C3}.Release|Any CPU.Build.0 = Release|Any CPU
{6DD50361-EE2D-4AEF-A307-EE9ADA930199}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6DD50361-EE2D-4AEF-A307-EE9ADA930199}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6DD50361-EE2D-4AEF-A307-EE9ADA930199}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6DD50361-EE2D-4AEF-A307-EE9ADA930199}.Release|Any CPU.Build.0 = Release|Any CPU
{088F39F4-2753-480A-A633-828AEC9D1DD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{088F39F4-2753-480A-A633-828AEC9D1DD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{088F39F4-2753-480A-A633-828AEC9D1DD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{088F39F4-2753-480A-A633-828AEC9D1DD5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0BA7133D-AEF5-4356-9B80-C02CB1DA77E4}
EndGlobalSection
EndGlobal
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment