Hinzufügen weiterer Schulaufgabenaufgaben

main
Sebastian Schüler 2023-10-30 16:00:04 +01:00
parent 3e6d08a851
commit af48c0dfec
7 changed files with 312 additions and 29 deletions

View File

@ -354,32 +354,7 @@ namespace Exercises_C_Sharp
new ExerciseElement(){Name = "Übung 9", Method = Exercises_C_Sharp.XX_Exceptions.Exercise_9.Start}
}
};
//************************
//****Sonderaufgaben******
//************************
ExerciseGroup specialElements = new ExerciseGroup()
{
Name = "Sonderaufgaben",
ElementList = new List<ExerciseElement>()
{
new ExerciseElement(){Name = "Schere Stein Papier Echse Spock", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_1.Start},
new ExerciseElement(){Name = "Schiffe versenken", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_2.Start},
new ExerciseElement(){Name = "Memory", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_3.Start}
}
};
//************************
//*Entwicklungsaufgaben***
//************************
ExerciseGroup developElements = new ExerciseGroup()
{
Name = "Entwicklungsaufgaben",
ElementList = new List<ExerciseElement>()
{
new ExerciseElement(){Name = "Dynamische Eingaben in Echtzeit", Method = Exercises_C_Sharp.Entwicklungsaufgaben.Minispiele.Step_1.Start}
}
};
//************************
//***Dateizugriffe********
//************************
@ -426,6 +401,55 @@ namespace Exercises_C_Sharp
}
};
//************************
//****Sonderaufgaben******
//************************
ExerciseGroup specialElements = new ExerciseGroup()
{
Name = "Sonderaufgaben",
ElementList = new List<ExerciseElement>()
{
new ExerciseElement(){Name = "Schere Stein Papier Echse Spock", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_1.Start},
new ExerciseElement(){Name = "Schiffe versenken", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_2.Start},
new ExerciseElement(){Name = "Memory", Method = Exercises_C_Sharp.Sonderaufgaben.Exercise_3.Start}
}
};
//************************
//*Entwicklungsaufgaben***
//************************
ExerciseGroup developElements = new ExerciseGroup()
{
Name = "Entwicklungsaufgaben",
ElementList = new List<ExerciseElement>()
{
new ExerciseElement(){Name = "Dynamische Eingaben in Echtzeit", Method = Exercises_C_Sharp.Entwicklungsaufgaben.Minispiele.Step_1.Start}
}
};
//************************
//****Schulaufgaben*******
//************************
ExerciseGroup examElements = new ExerciseGroup()
{
Name = "Schulaufgaben",
ElementList = new List<ExerciseElement>()
{
new ExerciseElement(){Name = "001 Klassen", Method = Exercises_C_Sharp.Schulaufgaben.S001_Class.Start},
new ExerciseElement(){Name = "002 Klassen", Method = Exercises_C_Sharp.Schulaufgaben.S002_Class.Start},
new ExerciseElement(){Name = "003 Tuple", Method = Exercises_C_Sharp.Schulaufgaben.S003_Tuple.Start},
new ExerciseElement(){Name = "004 Enum", Method = Exercises_C_Sharp.Schulaufgaben.S004_Enum.Start},
new ExerciseElement(){Name = "005 Tuple", Method = Exercises_C_Sharp.Schulaufgaben.S005_Tuple.Start},
new ExerciseElement(){Name = "006 Multidimensionale Arrays", Method = Exercises_C_Sharp.Schulaufgaben.S006_Multidimensionale_Arrays.Start},
new ExerciseElement(){Name = "007 Enum", Method = Exercises_C_Sharp.Schulaufgaben.S007_Enum.Start},
new ExerciseElement(){Name = "008 Enum", Method = Exercises_C_Sharp.Schulaufgaben.S008_Enum.Start}
}
};
//Zusammenführung
OptionList = new List<ExerciseGroup>(){
beginnerElements,
@ -450,7 +474,9 @@ namespace Exercises_C_Sharp
constructorElements,
exceptionElements,
filesystemElements,
mysqlElements
mysqlElements,
examElements
};
Menu();

View File

@ -7,7 +7,7 @@ namespace Exercises_C_Sharp.Schulaufgaben
//3. Jetzt soll der Code so erweitert werden, dass bei 10-maligen Vorkommen von dem Status "Failed" das Programm beendet wird. Implementieren Sie diese Funktion!
static List<States> StateList = new List<States>();
static void Start()
public static void Start()
{
Console.WriteLine("Programmstart");
FirstFill();

View File

@ -0,0 +1,70 @@
namespace Exercises_C_Sharp.Schulaufgaben
{
class S005_Tuple
{
static List<Tuple<string,Vals>> ProductList = new();
public static void Start()
{
Console.WriteLine("Willkommen!");
//Bauen Sie hier ein kleines Menü Ihrer Wahl ein, indem der User
// - Ein neues Produkt hinzufügen kann (-> Methode AddNewProduct)
// - Sich die Anzahl der benötigten Trucks anzeigen lassen kann (-> Methode GetAmountOfTrucks)
// - Sich unsere Kosten anzeigen lassen kann (-> Methode GetCosts)
// - Sich die Kosten für die Kunden anzeigen lassen kann (-> Methode GetCosts)
// - Die Liste senden kann (-> Methode SendList)
//Das Programm soll in einer Endlosschleife laufen.
//Code START
//Code ENDE
}
//In dieser Methode soll der User ein neues Produkt zum Transport anmelden können. Dieser muss den Namen des Transports als String und die Größe als Integer angeben. Dann soll das Element in die ProductList gespeichert werden. Der Integer soll dann wie folgt umgewandelt werden:
// <10 -> Tiny
// 10 - 50 -> Small
// 50 - 100 -> Medium
//100 - 1000 -> Big
// >1000 -> Oversize
static void AddNewProduct()
{
//Code START
//Code ENDE
}
//Geben Sie hier die Anzahl der Trucks zurück, welche für die obrige Liste an Produkten verwendet werden muss. Ein Truck kann entweder eine Oversize-Lieferung, vier Big-Lieferungen, fünfzehn Medium-Lieferungen, vierunddreißig Small-Lieferungen oder achtzig Tiny-Lieferung beinhalten. Ein Vermischen ist nicht möglich.
static int GetAmountOfTrucks()
{
//Code START
return -1;
//Code ENDE
}
//Hier sollen die Gesamtkosten für die Trucks UND die Kosten für den einzelnen Kunden zurück gegeben werden.
//Ein Truck kostet durchschnittlich mit Fahrer, Anschaffung, Unterhalt und Benzin 3.485,23 pro Fahrt.
//Rechnen Sie die Kosten pro Produkt aus. Es wird kein Unterschied zwischen der Größe gemacht, jedes Produkt kostet gleich viel. Addieren Sie zusätzlich 25% auf diesen Preis drauf. Dabei handelt es sich um unseren Gewinn.
static dynamic GetCosts(int amountTrucks)
{
//Code START
return -1;
//Code ENDE
}
//Hier wird die Liste geleert und die einzelnen Trucks beauftragt.
static void SendList()
{
//Leeren Sie die Liste ProductList
//Code START
//Code ENDE
//Hier wird später die Schnittstelle aufgerufen, um die Trucks los zu schicken. Hier müssen Sie nichts mehr programmieren, das übernehmen Ihre Kollegen.
//TrucksAPI.SendTrucks();
}
//Dieses Enum bezeichnet die Größe der Ladung
enum Vals {Tiny, Small, Medium, Big, Oversize}
}
}

View File

@ -0,0 +1,53 @@
namespace Exercises_C_Sharp.Schulaufgaben
{
//Sie sind ITler bei einer Softwarefirma. Ihre Abteilung hat Ihnen vorgefertigten Code gegeben, den Sie vervollständigen bzw. erweitern sollen. Folgende Aufgaben sollen Sie ausführen:
// - Schreiben Sie eine Methode "NormRow", die dafür sorgt, dass in keiner Zeile die selbe Zahl darin steht. Addieren Sie hierfür solange eine 1, bis ein nicht vorhandener Wert in dem Feld steht.
// - Erstellen Sie ein neues 5x5 int-Array in der Start-Methode.
// - Nutzen Sie die Methode "FillList" um Werte in das int-Array hinein zu schreiben.
// - Vertauschen Sie zufällig zwei Werte. Machen Sie den Tausch mit der Methode "ChangeFields".
class S006_Multidimensionale_Arrays
{
public static void Start()
{
//Code START
//Code ENDE
}
//Hier werden die Werte des Arrays mit den Standardwerten befüllt. Die Standardwerte sind die Multiplikation der Indezes.
static int[,] FillList(int[,] field)
{
for(int i = 0; i < field.GetLength(0); i++)
for(int k = 0; k < field.GetLength(1); k++)
field[i,k] = i * k;
return field;
}
//Hier kann ein User zwei Werte im Array tauschen lassen. Dabei muss das Array und die beiden Koordinaten übergeben werden, die getauscht werden sollen.
static int[,] ChangeFields(int[,] arr, (int x, int y) co1, (int x, int y) co2)
{
if(arr.GetLength(0) > co1.x && arr.GetLength(0) > co2.x && arr.GetLength(1) > co1.y && arr.GetLength(1) > co2.y)
{
var tem = arr[co1.x, co2.y];
arr[co1.x, co1.y] = arr[co2.x, co2.y];
arr[co2.x, co2.y] = tem;
}
return arr;
}
static int[,] SetField(int[,] arr, (int x, int y) field, int value)
{
if(arr.GetLength(0) > field.x && arr.GetLength(0) > field.x)
arr[field.x, field.y] = value;
return arr;
}
//Code START
//Code ENDE
}
}

View File

@ -0,0 +1,61 @@
namespace Exercises_C_Sharp.Schulaufgaben
{
//Sie sind ITler in der Finanzbranche.
class S007_Enum
{
//Schreiben Sie hier eine Liste von MachineOutput. Achten Sie auf das Keyword static.
//Code START
static dynamic MachineOutputList = -1;
//Code ENDE
public static void Start()
{
Console.WriteLine("Programmtestung Start");
//Füllen der Liste mit Zufallswerten
FillMachineListWithRandomValues(90);
//Wie viele Fehler sind passiert?
Console.WriteLine("Die Anzahl der Fehler lag bei " + GetPercentsOfMachineValue(MachineOutput.Error).ToString("0.00") + " %.");
//Ausgabe der Gesamtübersicht
ShowListData();
}
//Diese Methode füllt die obere Liste mit zufälligen Maschinendaten.
static void FillMachineListWithRandomValues(int amount)
{
for(int i = 0; i < amount; i++)
MachineOutputList.Add(GetRandomMachineData());
}
//Diese Methode soll zufällig Maschinendaten erzeugen. Sorgen Sie dafür, dass die Methode immer einen der zufälligen Werte vom Type MachineOutput zurück gibt.
static MachineOutput GetRandomMachineData()
{
//Code START
return MachineOutput.Error;
//Code ENDE
}
//Dieser Methode kann man ein MachineOutput-Element geben. Wenn man das gemacht hat, dann berechnet diese Methode das prozentuale Erscheinen dieses Werts in der Liste. ((Anzahl des Vorkommens / Gesamtanzahl von Elementen in der Liste) * 100) Implementieren Sie diese Funktion.
static decimal GetPercentsOfMachineValue(MachineOutput mo)
{
//Code START
return -1;
//Code ENDE
}
//Diese Methode soll das Vorkommen aller Elemente wie folgt ausgeben:
// 3x Perfect
// 12x Good
// 2x Okay
//... usw
//Achten Sie dabei darauf, dass das x immer in der selben Zeile steht, egal ob die Zahl eine oder zwei Stellen hat. Wir gehen nicht davon aus, dass es mehr als zwei Stellen werden.
static void ShowListData()
{
//Code START
//Code ENDE
}
enum MachineOutput { Perfect, Good, Okay, Bad, Dreadfull, Error}
}
}

View File

@ -0,0 +1,73 @@
namespace Exercises_C_Sharp.Schulaufgaben
{
//Sie sind ITler bei den Wasserwerken
class S008_Enum
{
public static void Start()
{
Console.WriteLine("Wir testen heute die besten Wasseraufbereiter! Unser mega toller Algorithmus wurde extra von einem sehr gut ausgebildeten ITler von den Wasserwerken programmiert!");
var listOfBestProducts = GetBestOnes();
Console.WriteLine();
Console.WriteLine("Hier kommen die besten drei Produkte:");
//Geben Sie hier die Liste der besten Produkte mit deren Platzierungen aus. Benutzen Sie dafür die Methode GetBestOnes.
//Code START
//Code ENDE
Console.WriteLine();
Console.WriteLine("Aber was heißen die Klassen eigentlich? Hier die Übersicht darüber:");
//Geben Sie hier alle WaterQuality-Elemente aus und geben Sie mit Hilfe der Methode WaterUseful die dazugehörige Beschreibung aus:
//Code START
//Code ENDE
Console.WriteLine();
Console.WriteLine("Vielen Dank für die Nutzung unseres tollen Vergleichtools!");
Console.WriteLine("Wir wünschen Ihnen eine schöne Restwoche! Bleiben Sie uns treu!");
}
//Dieser Methode kann man eine WaterQuality und ein WaterAdd übergeben. Die Methode berechnet dann die neue Wasserqualität, nachdem das Mittel hinzugefügt wurde und gibt diese zurück.
static WaterQuality MakeBetterWater(WaterQuality wq, WaterAdd wa)
{
return (WaterQuality)(((int)wq * (int)wa) % 9);
}
//Diese Methode bewertet die Wasserqualität und gibt diese als String zurück.
static string WaterUseful(WaterQuality wq)
{
if(wq == WaterQuality.AAA)
return "Für jeden uneingeschränkt trinkbar und für Babynahrung geeignet";
if(wq == WaterQuality.AA)
return "Für jeden uneingeschränkt trinkbar";
if(wq == WaterQuality.A)
return "Grundlegend für jeden trinkbar, Menschen mit Vorerkrankungen sollten aufpassen";
if(wq == WaterQuality.B)
return "Für anfällige Menschen mit Vorerkrankungen ungeeignet, in geringen Dosen für normale Menschen geeignet";
if(wq == WaterQuality.C)
return "Vorsichtiger Genuss von minimalen Mengen, abgekocht (mindestens 60 Sekunden) noch genießbar";
if(wq == WaterQuality.D)
return "Leicht verunreinigt, nur im äußersten Notfall (Gefahr für Leib und LEben) trinken und Menge minimal halten";
if(wq == WaterQuality.E)
return "Nicht trinkbar, ab höheren Dosen tötlich";
if(wq == WaterQuality.F)
return "Nicht trinkbar, ab mittleren Dosen tötlich";
if(wq == WaterQuality.X)
return "Nicht trinkbar, schon in kleinen Dosen tötlich";
return string.Empty;
}
//Sie sollen nun die Methode "GetBestOnes" schreiben. In dieser Methode sollen sie die Top 3 der besten WaterAdd-Produkte als Liste zurück geben. Dabei ist der Sieger der, der es schafft, aus der schlechtestens Qualität die beste Qualität zu machen. (Also X -> AAA, X -> AA usw.). Bei einem eventuellen Gleichstand nehmen sie die nächste Qualitätsstufe (also F -> AAA, F -> AA usw.)
static List<WaterAdd> GetBestOnes()
{
//Code START
return new List<WaterAdd>();
//Code ENDE
}
enum WaterQuality {AAA, AA, A, B, C, D, E, F, X }
enum WaterAdd { Micropur, Reents, Yachticon, Tankline }
}
}

View File

@ -1,2 +1,2 @@
5
7
6
22