using System;
namespace TestingCode
{
class Program
{
private static int stunden = 0;
private static int minuten = 0;
static void Main(string[] args)
{
GetInput(); //Erhalte eine Angabe
Dauerschleife();
}
private static void GetInput()
{
String input = "";
while() //Solange input kein Doppelpunkt enthält Uhrzeit
abfragen
{
[Link]("Bitte geben Sie eine Uhrzeit an (hh:mm):");
//Informative Ausgabe, was als Eingabe erwünscht ist
input = [Link](); //Eingegebene Zeile lesen
}
//Split teilt an der in der Klammer angegebenen Zeichenkete und gibt ein
Ergebniss-Array ohne dieses Zeichen zurück:
//z.B. "16:46".split(":"); ergibt:
//String[] ergebnis = {"16", "45"};
stunden = Convert.ToInt32([Link](":")[0]); //Index 0 des Split-Arrays zu
Zahl konvertieren
minuten = Convert.ToInt32([Link](":")[1]); //Index 1 des Split-Arrays zu
Zahl konvertieren
}
private static void Dauerschleife()
{
//Fehlt: warte eine Minute und erhöhe Minute danach um 1
if(minuten == 60)
{
minuten = 0;
stunden++;
}
if(stunden == 24)
{
stunden = 0;
}
Boolean[] aktiveEinerMin = ErhalteAktivePins((int)(minuten % 10), 4); //Rest
der Teilung durch 10 (= 1er Stellen)
Boolean[] aktiveZehnerMin = ErhalteAktivePins((int)(minuten / 10), 3);
//Ganzzahl der Teilung durch 10 (= 10er Stellen)
Boolean[] aktiveEinerStd = ErhalteAktivePins((int)(stunden % 10), 4); //Rest
der Teilung durch 10 (= 1er Stellen)
Boolean[] aktiveZehnerStd = ErhalteAktivePins((int)(stunden / 10), 2);
//Ganzzahl der Teilung durch 10 (= 10er Stellen)
//Hier Ausgabe der erhaltenen An-Aus Arrays, Sonst hier Display aktualisieren:
PrintArray(aktiveEinerMin, "aktive Einer-Minuten");
PrintArray(aktiveZehnerMin, "aktive Zehner-Minuten");
PrintArray(aktiveEinerStd, "aktive Einer-Stunden");
PrintArray(aktiveZehnerStd, "aktive Zehner-Stunden");
}
private static Boolean[] ErhalteAktivePins(int pruefzahl, int anzahlPins)
{
//Erstellt einen Array für die Lampen mit An(true) und Aus(false)
Boolean[] aktivePins = new Boolean[anzahlPins]; //Erstellen eines Arrays in
Länge der Anzahl der Pins
if(pruefzahl >= 8 && anzahlPins >= 4) //Ist die Prüfzahl >=8 (letzer Bit) und
Array Mindestens 4 Stellen groß?
{
aktivePins[3] = true; //4. Lampe auf An setzen
pruefzahl -= 8; //abziehen des Wertes der 4. Bit-Stelle
}
if (pruefzahl >= 4 && anzahlPins >= 3) // Ist die Prüfzahl >= 4(vorletzer Bit)
und Array Mindestens 3 Stellen groß?
{
aktivePins[2] = true; //3. Lampe auf An setzen
pruefzahl -= 4; //abziehen des Wertes der 3. Bit-Stelle
}
if (pruefzahl >= 2 && anzahlPins >= 2) //2. Bit
{
aktivePins[1] = true; //2. Lampe auf An setzen
pruefzahl -= 2; //abziehen des Wertes der 2. Bit-Stelle
}
if (pruefzahl >= 1 && anzahlPins >= 1) //1. Bit
{
aktivePins[0] = true; //1. Lampe auf An setzen
pruefzahl -= 1; //abziehen des Wertes der 1. Bit-Stelle
}
if(pruefzahl != 0) //Validieren des Ergebnisses und bei Fehlschlag Fehler
werfen
{
throw new InvalidOperationException("Die Prüfzahl ist nicht 0 und konnte
somit nicht korrekt zerteilt werden");
}
return aktivePins; //erstellten An-Aus Array zurückgeben
}
private static void PrintArray(Boolean[] array, String beschreibung) //Methode
zur Ausgabe von Arrays in der Konsole
{
[Link](beschreibung + " = {");
foreach (Boolean b in array)
{
[Link](b + ", ");
}
[Link]("};");
}
}
}