Skip to content

Instantly share code, notes, and snippets.

@niansa
Last active May 7, 2025 21:43
Show Gist options
  • Save niansa/d7b30dd2aefc292edf3e061e170e804d to your computer and use it in GitHub Desktop.
Save niansa/d7b30dd2aefc292edf3e061e170e804d to your computer and use it in GitHub Desktop.
Pseudocode AP2 2025 Anwendungsentwicklung

Aufgabe

Schreiben Sie eine Funktion die anhand der folgenden 2 Klassen die Anzahl der Tage zaehlt, an denen die gegebene Station mehr als 80% ausgelastet ist.

Station:
    stationId: Int
    anzahlBetten: Int

Belegung:
    stationId: Int
    datumVon: Date
    datumBis: Date

Hinweise

  • Der Typ Date laesst sich per < und > Operatoren vergleichen. Jeder Tag ist ein neuer Wert.
  • datumBis is exklusiv: Belegungen sollen nicht fuer den Tag gezaehlt werden an dem sie enden.

Funktionskopf

func auslastungAusrechnen(belegung: Array<Belegung>, startDatum: Date, endDatum: Date, station: Station) -> Int
func auslastungAusrechnen(belegung: Array<Belegung>, startDatum: Date, endDatum: Date, station: Station) -> Int {
// Rechne wie viel Auslastung 80% der Gesamtverfuegbarkeit entspricht
let auslastung80Prozent = Int(station.anzahlBetten * 0.8)
// Rechne Auslastung pro Tag
var tage: [Date: Int] = [:] // Dictionary bzw. Map! Z.B. std::map<Date, int> in C++
for datum in startDatum...endDatum {
tage[datum] = 0
for b in belegung {
if b.stationId == station.stationId && b.datumVon <= datum && b.datumBis > datum {
tage[datum]! += 1
}
}
}
// Rechne Anzahl Tage an denen Auslastung mehr als 80% war
var ergebnis = 0
for (_, belegungen) in tage {
if belegungen > auslastung80Prozent {
ergebnis += 1
}
}
return ergebnis
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment