Ausflugsplanung (Selektionen)
Folgende Ausflüge werden vom Verkersverein angeboten (dahinter steht, unter welchen Bedingungen sie stattfinden):
- Kegeln: Normalerweise abends, am Wochenende auch tagsüber, schönes oder schlechtes Wetter. Auch mit Kindern möglich.
- Freibad: nur schönes Wetter. Nur tagsüber (nach 17:00 geschlossen)
- Hallenbad: Schönes oder schlechtes Wetter. Offen täglich. An Wochenenden in den Schulferien wird das Bad gewartet und ist geschlossen.
- Wandern im Dunkelwald: Nur bei schönem Wetter. Tagsüber immer möglich. Abends nicht möglich.
- Freikurs Musik: Im Schulhaus, daher nur abends während der Schulzeit (nicht am Wochenende). Wetter egal.
- Brotbackkurs: Wird nur am Wochenende bei schlechtwetter durchgeführt. Es gibt einen Tages- und einen Abendkurs.
- Schieferbergwerk: Täglich tagsüber (keine Abendführungen außer an Wochenenden in den Schulferien).
- Go-Kurse: Am Wochenende bei schlechtem Wetter (im Gemeindelokal Raum B4) oder aber unter der Woche, dann aber nur abends bei schönem Wetter (im Lokal Widder in der Gartenwirtschaft).
- Billard: Abends, am Wochenende auch tagsüber. Für Kinder wegen der hohen Tische ungeeignet.
- Rennautofahren: Nur Erwachsene: Nur tagsüber an Wochenenden der Schulferien.
- Open-Air Kino: Nur abends. Am Wochenende auch tagsüber (dann aber mit Lichtschutz). Nur bei schönem Wetter.
- Korbflechten: Nur in den Schulferien bei Schlechtwetter. Keine Kurse am Wochenende.
- Besuch des Wasserfalls: Täglich tagsüber. Keine Abendführungen weil der Fußweg zu dunkel ist.
- Zoobesuch: Täglich offen, auch abends.
Schreiben Sie für die Angestellten im Verkersverein ein Programm, bei dem diese eingeben können, welche Art Ausflug zu planen ist:
- Wochentag / Wochenende
- Schönes Wetter / Regenwetter
- Schulferien / Schule
- Tagsüber / Abend
- Mit Kindern / ohne Kinder
Danach werden alle möglichen Ausflüge ausgegeben.
0 Kommentare
9 Lösung(en)
package ch.programmieraufgaben.selektion.ausflugsplanung;
import java.util.Scanner;
/**
* Ausflugsplanung für die Angestellten des Verkersvereins.
* Verschiedene Voraussetzungen sind möglich, wobei nicht alle
* Angebote auf alle Voraussetzungen zutreffen.
* @version 0.1 (Jul 27, 2014)
* @author Philipp Gressly Freimann
* (philipp.gressly@santis.ch)
*/
public class Ausflugsplanung {
// voraussetzungen
// wochentag, Schönwetter, Ferien, tagsüber
boolean wochentag, schoenWetter,
ferien, tagsueber, mitKindern;
// Mögliche Ausflüge
boolean kegeln, freibad, hallenbad, dunkelwald,
musik, brotbackkurs, schieferbergwerk, go_kurse,
billard, rennauto, open_air_kino, korbflechten,
wasserfall, zoobesuch;
public static void main(String[] args) {
new Ausflugsplanung().top();
}
// Berechne die möglichen Ausflüge, wenn die Voraussetzungen
// bereits bekannt sind.
void calc() {
// Vereinfachungen:
boolean wochenEnde = !wochentag ;
boolean schlechtWetter = !schoenWetter;
boolean schulzeit = !ferien ;
boolean abends = !tagsueber ;
boolean nurErwachsene = !mitKindern ;
kegeln = abends || wochenEnde;
freibad = schoenWetter && tagsueber;
hallenbad = !(ferien && wochenEnde);
dunkelwald = freibad;
musik = abends && schulzeit;
brotbackkurs = wochenEnde && schlechtWetter;
schieferbergwerk = tagsueber || (wochenEnde && ferien);
go_kurse = (wochenEnde && schlechtWetter) ||
(wochentag && abends && schoenWetter);
billard = nurErwachsene && (abends || wochenEnde);
rennauto = nurErwachsene && tagsueber && ferien && wochenEnde;
open_air_kino = schoenWetter && (abends || wochenEnde);
korbflechten = ferien && schlechtWetter && wochentag;
wasserfall = tagsueber;
zoobesuch = true;
}
void top() {
wochentag = einlesenBool("Wochentag (mo-fr)" );
schoenWetter = einlesenBool("Schönes Wetter" );
ferien = einlesenBool("Schulferien" );
tagsueber = einlesenBool("Tagsüber" );
mitKindern = einlesenBool("Ausflug mit Kindern");
calc();
vorschlaegeAusgeben();
}
void vorschlaegeAusgeben() {
System.out.println("\nVorschläge für Sie:\n");
if(kegeln ) {System.out.println("Kegeln" ); }
if(freibad ) {System.out.println("Freibad" ); }
if(hallenbad ) {System.out.println("Hallenbad" ); }
if(dunkelwald ) {System.out.println("Wandern im Dunkelwald" ); }
if(musik ) {System.out.println("Freikurs Musik" ); }
if(brotbackkurs ) {System.out.println("Brotbackkurs" ); }
if(schieferbergwerk ) {System.out.println("Schieferbergwerk" ); }
if(go_kurse ) {System.out.println("Go-Kurse" ); }
if(billard ) {System.out.println("Billard" ); }
if(rennauto ) {System.out.println("Rennautofahrt" ); }
if(open_air_kino ) {System.out.println("Open Air Kino" ); }
if(korbflechten ) {System.out.println("Korbflechten" ); }
if(wasserfall ) {System.out.println("Besuch des Wasserfalls"); }
if(zoobesuch ) {System.out.println("Zoobesuch" ); }
}
/**
* Booleschen Wert einlesen
* @param frage
* @return true, wenn der Anwender nichts mit "n" beginnendes eingibt.
*/
Scanner sc = new Scanner(System.in);
private boolean einlesenBool(String frage) {
System.out.println("Handelt es sich um " + frage + "? <j/n>");
String antwort = sc.nextLine().trim();
return antwort.toUpperCase().charAt(0) != 'N';
}
} // end of class Ausflugsplanung
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
def inputbool(prompt):
prompt += " [J/N] "
inp = None
while inp is None:
inp = input(prompt)
if inp in "jJ":
return True
elif inp in "nN":
return False
else:
inp = None
class Ausflug(object):
def __init__(self, *args, **kwargs):
self.bedingungen = []
if len(args) == 1 and type(args[0]) == list:
for d in args[0]:
self.neue_bedingung(**d)
else:
self.neue_bedingung(**kwargs)
def neue_bedingung(self, wochenende=None, guteswetter=None, schule=None, abends=None, mitkindern=None, not_=False):
bedingungen = {"WE":wochenende, "GW":guteswetter, "SC":schule, "AB":abends, "MK":mitkindern}
bedingungen = {k:v for k, v in bedingungen.items() if v is not None}
self.bedingungen.append(bedingungen)
return self
def vorschlagbar(self, bedingungen):
for mbedingungen in self.bedingungen:
b = all([bedingungen.get(k, v) == v for k, v in mbedingungen.items()])
if mbedingungen.get("not_", False): b = not b
if b: return True
return False
ausfluege = {"Kegeln":Ausflug([{"abends":True}, {"wochenende":True}]),
"Freibad":Ausflug(guteswetter=True, abends=False),
"Hallenbad":Ausflug(schule=True, wochenende=True, not_=True),
"Wandern im Dunkelwald":Ausflug(guteswetter=True, abends=False),
"Freikurs Musik":Ausflug(abends=True, schule=True, wochenende=False),
"Brotbackkurs":Ausflug(wochenende=True, guteswetter=False),
"Schieferbergwerk":Ausflug([{"abends":False}, {"wochenende":True, "schule":False}]),
"Go-Kurse":Ausflug([{"wochenende":True, "guteswetter":False}, {"wochenende":False, "abends":True, "guteswetter":True}]),
"Billiard":Ausflug([{"abends":True, "mitkindern":False}, {"wochenende":True, "mitkindern":False}]),
"Rennautofahren":Ausflug(mitkindern=False, abends=False, wochenende=True, schule=False),
"Open-Air Kino":Ausflug([{"abends":True, "guteswetter":True}, {"wochenende":True, "guteswetter":True}]),
"Korbflechten":Ausflug(schule=False, guteswetter=False, wochenende=False),
"Besuch des Wasserfalls":Ausflug(abends=False),
"Zoobesuch":Ausflug()}
bedingungen = {"WE":inputbool("Wochenende?"), "GW":inputbool("Schoenes Wetter?"), "SC":inputbool("Schule?"), "AB":inputbool("Abend?"), "MK":inputbool("Kinder?")}
for name, b in ausfluege.items():
if b.vorschlagbar(bedingungen):
print(name)
Lösung von: Karl Welzel ()
//eingabemaske
document.write(
'<input type="checkbox" id="weekdays" onchange="compute()"> ' +
'Es ist ein Wochentag<br>' +
'<input type="checkbox" id="goodWeather" onchange="compute()"> ' +
'Es ist gutes Wetter<br>' +
'<input type="checkbox" id="holidays" onchange="compute()"> ' +
'Es sind Schulferien<br>' +
'<input type="checkbox" id="daytime" onchange="compute()"> ' +
'Es ist noch nicht Abend<br>' +
'<input type="checkbox" id="kids" onchange="compute()"> ' +
'Ich habe Kinder dabei' +
'<p id="out"></p>'
);
var activities = [
{ name : "Kegeln",
isAvailable : function() {
if (!daytime || (weekdays && daytime)) return true;
return false;
}
},
{ name : "Freibad",
isAvailable : function() {
if (goodWeather && daytime) return true;
return false;
}
},
{ name : "Hallenbad",
isAvailable : function() {
if (holidays && !weekdays) return true;
return false;
}
},
{ name : "Wandern im Dunkelwald",
isAvailable : function() {
if (goodWeather && daytime) return true;
return false;
}
},
{ name : "Freikurs Musik",
isAvailable : function() {
if (!daytime && !holidays && !weekdays) return true;
return false;
}
},
{ name : "Brotbackkurs",
isAvailable : function() {
if (!goodWeather && !weekdays) return true;
return false;
}
},
{ name : "Schieferbergwerk",
isAvailable : function() {
if (!weekdays && !daytime && holidays) return true;
return false;
}
},
{ name : "Go-Kurse",
isAvailable : function() {
if ((!weekdays && !goodWeather) || (!daytime && goodWeather))
return true;
return false;
}
},
{ name : "Billard",
isAvailable : function() {
if (daytime && !weekdays & !kids) return true;
return false;
}
},
{ name : "Rennautofahren",
isAvailable : function() {
if (!kids && !weekdays && holidays) return true;
return false;
}
},
{ name : "Open-Air-Kino",
isAvailable : function() {
if (goodWeather && (daytime && weekdays)) return true;
return false;
}
},
{ name : "Korbflechten",
isAvailable : function() {
if (holidays && !goodWeather && weekdays) return true;
return false;
}
},
{ name : "Besuch des Wasserfalls",
isAvailable : function() {
if (daytime) return true;
return false;
}
},
{ name : "Zoobesuch",
isAvailable : function() { return true; }
}
];
function compute() {
weekdays = document.getElementById("weekdays").checked;
goodWeather = document.getElementById("goodWeather").checked;
holidays = document.getElementById("holidays").checked;
daytime = document.getElementById("daytime").checked;
kids = document.getElementById("kids").checked;
out = document.getElementById("out");
var arr = [],
i = 0;
for (i; i < activities.length; i++)
if (activities[i].isAvailable()) arr.push(activities[i].name);
out.innerHTML = arr.sort().join(", ");
}
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Ausflugsplan {
class Program {
readonly static Trip[] Trips = new Trip[] {
new Trip("Kegeln", Condition.Weekend, Condition.AtDay),
new Trip("Kegeln", Condition.Weekday),
new Trip("Freibad", Condition.BadWeather, Condition.AtNight),
new Trip("Hallenbad", Condition.Weekend, Condition.Hollydays),
new Trip("Wandern", Condition.BadWeather, Condition.AtNight),
new Trip("Musikkurs", Condition.AtDay, Condition.Hollydays, Condition.Weekend),
new Trip("Brotbacken Tageskurs", Condition.Weekday, Condition.GoodWeather, Condition.AtNight),
new Trip("Brotbacken Abendkurs", Condition.Weekday, Condition.GoodWeather, Condition.AtDay),
new Trip("Schieferbergwerk", Condition.AtNight),
new Trip("Schieferbergwerk", Condition.Weekday, Condition.School),
new Trip("Go-Kurs im Gemeindelokal Raum B4", Condition.Weekday, Condition.GoodWeather),
new Trip("Go-Kurs im Lokal Widder in der Gartenwirtschaft", Condition.Weekend, Condition.AtDay, Condition.BadWeather),
new Trip("Billard", Condition.AtDay),
new Trip("Billard", Condition.Weekday),
new Trip("Rennautofahren", Condition.WithKids, Condition.AtNight, Condition.Weekday, Condition.School),
new Trip("Open-Air-Kino", Condition.AtDay, Condition.BadWeather),
new Trip("Open-Air-Kino mit Lichtschutz", Condition.AtNight, Condition.Weekday, Condition.BadWeather),
new Trip("Korbflechten", Condition.School, Condition.GoodWeather, Condition.Weekend),
new Trip("Wasserfall besuchen", Condition.AtNight),
new Trip("Zoobesuch")
};
readonly static Dictionary<Condition, string>[] OptionsToChoose = new Dictionary<Condition, string>[]{
new Dictionary<Condition, string>() {
{ Condition.Weekday, "Wochentag" }, { Condition.Weekend, "Wochenende" } },
new Dictionary<Condition, string>() {
{ Condition.GoodWeather, "Schönes Wetter" }, { Condition.BadWeather, "Schlechtes Wetter" } },
new Dictionary<Condition, string>() {
{ Condition.Hollydays, "Schulferien" }, { Condition.School, "Schule" } },
new Dictionary<Condition, string>() {
{ Condition.AtDay, "Tagsüber" }, { Condition.AtNight, "Abends" } },
new Dictionary<Condition, string>() {
{ Condition.WithKids, "Mit Kindern" }, { Condition.WithoutKids, "Ohne Kinder" } }
};
static void Main() {
Dictionary<Condition, string> ChoosenOptions = new Dictionary<Condition, string>();
for(int i = 0; i < OptionsToChoose.Count(); i++) {
PrintChoosenOptions(ChoosenOptions.Values.ToArray());
for(int ii = 0; ii < OptionsToChoose[i].Count; ii++) {
Console.WriteLine("[{0}] {1}", ii + 1, OptionsToChoose[i].ElementAt(ii).Value);
}
string sInput; int iInput = -1;
do sInput = Console.ReadKey(true).KeyChar.ToString();
while(!Regex.IsMatch(sInput, "^[1-9]$") || OptionsToChoose[i].Count < (iInput = Convert.ToInt32(sInput)));
ChoosenOptions.Add(OptionsToChoose[i].ElementAt(iInput - 1).Key, OptionsToChoose[i].ElementAt(iInput - 1).Value);
}
List<string> PossibleTrips = new List<string>();
foreach(Trip Trip in Trips)
if(Trip.IsPossible(ChoosenOptions.Keys.ToArray()))
PossibleTrips.Add(Trip.Name);
PrintChoosenOptions(ChoosenOptions.Values.ToArray());
foreach(string PossibleTrip in PossibleTrips.Distinct())
Console.WriteLine(PossibleTrip);
Console.ReadKey(true);
}//EndMain
static void PrintChoosenOptions(string[] ChoosenOptions) {
Console.Clear();
for(int i = 0; i < ChoosenOptions.Length; i++)
if(ChoosenOptions[i] != null) Console.Write(ChoosenOptions[i] + "{0} ", (i + 1 == ChoosenOptions.Length ? "" : ","));
Console.WriteLine("\n");
}
}//EndProgram
enum Condition {
Weekday, Weekend,
GoodWeather, BadWeather,
Hollydays, School,
AtDay, AtNight,
WithKids, WithoutKids
}
class Trip {
string name;
Condition[] Excludes;
public string Name { get { return name; } }
public Trip(string name, params Condition[] Excludes) {
this.name = name;
this.Excludes = Excludes;
}
public bool IsPossible(params Condition[] Conditions) {
foreach(Condition condition in Conditions)
if(this.Excludes.Contains(condition))
return false;
return true;
}
}//EndTrip
}
Lösung von: Marcel Kapma ()
class Trip
def initialize (name, weekend, nice_weather, holidays, daytime, with_kids)
@name = name
@conditions = [weekend, nice_weather, holidays, daytime, with_kids]
end
attr_reader :name
def is_possible (conditions)
is_possible = true
@conditions.each_index {|i|
if @conditions[i] !=0 && @conditions[i] != conditions[i]
is_possible = false
end
}
return is_possible
end
end
trips = [
kegeln_w = Trip.new("Kegeln", false, 0, 0, false, 0),
kegeln_we = Trip.new("Kegeln", true, 0, 0, 0, 0),
hallenbad = Trip.new("Hallenbad", 0, 0, false, 0, 0),
hallenbad_s = Trip.new("Hallenbad", false, 0, true, 0, 0),
freibad = Trip.new("Freibad", 0, true, 0, true, 0),
wandern = Trip.new("Wandern im Dunkelwald", 0, true, 0, true, 0),
musikkurs = Trip.new("Freikurs Musik", false, 0, false, false, 0),
brotbackkurs = Trip.new("Brotbackkurs", true, false, 0, 0, 0),
schieferbergwerk = Trip.new("Schieferbergwerk", 0, 0, 0, true, 0),
schieferbergwerk_s = Trip.new("Schieferbergwerk", true, 0, true, false, 0),
gokurs_we = Trip.new("Go-Kurs", true, false, 0, 0, 0),
gokurs_w = Trip.new("Go-Kurs", false, true, 0, false, 0),
billard = Trip.new("Billard", false, 0, 0, false, false),
billard_we = Trip.new("Billard", true, 0, 0, 0, false),
autorennen = Trip.new("Rennautofahren", true, 0, true, true, false),
openairkino_ls = Trip.new("Open-Air-Kino (mit Lichtschutz)", true, true, 0, true, 0),
openairkino = Trip.new("Open-Air-Kino", 0, true, 0, false, 0),
korbflechten = Trip.new("Korbflechten", true, false, 0, 0, 0),
wasserfall = Trip.new("Beuch des Wasserfalls", 0, 0, 0, true, 0),
zoobesuch = Trip.new("Zoobesuch", 0, 0, 0, 0, 0)
]
conditions = Array.new
options = ["Wochenende?", "Schönes Wetter?", "Schulferien?", "Tagsüber?", "Mit Kindern?"]
p "Wählen Sie 1 für Ja und 2 für Nein:"
options.each {|s|
puts s
if gets.chomp.to_i == 1
conditions.push(true)
else
conditions.push(false)
end
}
p "Folgende Ausflüge sind möglich:"
trips.each {|ausflug|
if ausflug.is_possible(conditions)
puts ausflug.name
end
}
Lösung von: Name nicht veröffentlicht
class Program
{
public static bool wochenende;
public static bool schönwetter;
public static bool ferien;
public static bool tag;
public static bool kinder;
public static void Kegeln()
{
if (wochenende == true)
{
Console.WriteLine("Kegeln");
}
else if (wochenende == false && tag == false)
{
Console.WriteLine("Kegeln");
}
}
public static void Freibad()
{
if (schönwetter == true && tag == true)
{
Console.WriteLine("Freibad");
}
}
public static void Hallenbad()
{
if (ferien == false)
{
Console.WriteLine("Hallenbad");
}
else if (ferien == true && wochenende == false)
{
Console.WriteLine("Hallenbad");
}
}
public static void Wandern()
{
if (schönwetter == true && tag == true)
{
Console.WriteLine("Wandern im Dunkelwald");
}
}
public static void FreikursMusik()
{
if (ferien == false && wochenende == false && tag == false)
{
Console.WriteLine("Freikurs Musik");
}
}
public static void BrotbackKurs()
{
if (wochenende == true && schönwetter == false)
{
Console.WriteLine("Brotbackkurs");
}
}
public static void SchieferBergwerk()
{
if (ferien == false && tag == true)
{
Console.WriteLine("Schieferbergwerk");
}
else if (ferien == true && wochenende == true)
{
Console.WriteLine("Schieferbergwerk");
}
}
public static void GoKurse()
{
if (wochenende == true && schönwetter == false)
{
Console.WriteLine("Go-Kurse (im Gemeindelokal)");
}
else if (wochenende == false && tag == false && schönwetter == true)
{
Console.WriteLine("Go-Kurse (im Lokal Widder)");
}
}
public static void Billard()
{
if (kinder == false && tag == false)
{
Console.WriteLine("Billard");
}
else if (kinder == false && wochenende == true && tag == true)
{
Console.WriteLine("Billard");
}
}
public static void Rennautofahren()
{
if (kinder == false && tag == true && ferien == true && wochenende == true)
{
Console.WriteLine("Rennautofahren");
}
}
public static void OpenAirKino()
{
if (tag == false && schönwetter == true)
{
Console.WriteLine("Open-Air Kino");
}
else if (wochenende == true && tag == true && schönwetter == true)
{
Console.WriteLine("Open-Air Kino");
}
}
public static void Korbflechten()
{
if (ferien == true && wochenende == false && schönwetter == false)
{
Console.WriteLine("Korbflechten");
}
}
public static void BesuchDesWasserfalls()
{
if (tag == true)
{
Console.WriteLine("Besuch des Wasserfalls");
}
}
public static void ZooBesuch(){
Console.WriteLine("Zoobesuch");
}
static void Main(string[] args)
{
bool repeat;
Console.WriteLine("Ausflugsplanung");
Console.WriteLine("---------------");
Console.WriteLine("");
//Einlesen der Bedingungen-----------------------------------------------------------------------------------------------
Console.WriteLine("\nPlanen Sie, ihren Ausflug an einem Wochenende durchzuführen? \n[Wochenende/Wochentag]");
repeat = true;
while (repeat == true)
{
string input = Console.ReadLine();
input = input.ToUpper();
if(input == "WOCHENENDE")
{
wochenende = true;
repeat = false;
}
else if(input == "WOCHENTAG")
{
wochenende = false;
repeat = false;
}
else
{
Console.WriteLine("Falsche Eingabe, bitte versuche es erneut:");
repeat = true;
}
}
Console.WriteLine("\nBei welchem Wetter planen Sie, ihren Ausflug durchzuführen? \n[Sonne/Regen]");
repeat = true;
while (repeat == true)
{
string input = Console.ReadLine();
input = input.ToUpper();
if (input == "SONNE")
{
schönwetter = true;
repeat = false;
}
else if (input == "REGEN")
{
schönwetter = false;
repeat = false;
}
else
{
Console.WriteLine("Falsche Eingabe, bitte versuche es erneut:");
repeat = true;
}
}
Console.WriteLine("\nPlanen Sie, ihren Ausflug an in den Ferien durchzuführen? \n[Ferien/Schule]");
repeat = true;
while (repeat == true)
{
string input = Console.ReadLine();
input = input.ToUpper();
if (input == "FERIEN")
{
ferien = true;
repeat = false;
}
else if (input == "SCHULE")
{
ferien = false;
repeat = false;
}
else
{
Console.WriteLine("Falsche Eingabe, bitte versuche es erneut:");
repeat = true;
}
}
Console.WriteLine("\nPlanen Sie, ihren Ausflug Tagsüber durchzuführen? \n[Tag/Abend]");
repeat = true;
while (repeat == true)
{
string input = Console.ReadLine();
input = input.ToUpper();
if (input == "TAG")
{
tag = true;
repeat = false;
}
else if (input == "ABEND")
{
tag = false;
repeat = false;
}
else
{
Console.WriteLine("Falsche Eingabe, bitte versuche es erneut:");
repeat = true;
}
}
Console.WriteLine("\nPlanen Sie, einen Ausflug mit oder für Kinder organisieren? \n[j/n]");
repeat = true;
while (repeat == true)
{
string input = Console.ReadLine();
input = input.ToUpper();
if (input == "J")
{
kinder = true;
repeat = false;
}
else if (input == "N")
{
kinder = false;
repeat = false;
}
else
{
Console.WriteLine("Falsche Eingabe, bitte versuche es erneut:");
repeat = true;
}
}
//Ausgabe der möglichen Ausflüge-----------------------------------------------------------------------------------------
Console.WriteLine("");
Console.WriteLine("-------------------------------");
Console.WriteLine("Folgende Ausflüge sind möglich:");
Console.WriteLine("");
Kegeln();
Freibad();
Hallenbad();
Wandern();
FreikursMusik();
BrotbackKurs();
SchieferBergwerk();
GoKurse();
Billard();
Rennautofahren();
OpenAirKino();
Korbflechten();
BesuchDesWasserfalls();
ZooBesuch();
Console.WriteLine("\nDrücken Sie eine beliebige Taste um das Programm zu beenden.");
Console.ReadKey();
}
}
Lösung von: Loris Leuenberger (BiCT AG)
// C++ 14 | VS-2022
#include <iostream>
#include <vector>
const struct Vorschlag {
const std::string bezeichnung;
const bool machbar;
};
class Plan {
const bool wochentag_{}, wochenende_{ !wochentag_ };
const bool schoenwetter_{}, schlechtwetter{ !schoenwetter_ };
const bool ferien_{}, schulzeit_{ !ferien_ };
const bool tagsueber_{}, abends_{ !tagsueber_ };
const bool mit_kindern_{}, nur_erwachsene_{ !mit_kindern_ };
const std::vector<Vorschlag> vorschlaege_{
{"Kegeln", abends_ || wochenende_},
{"Freibad", schoenwetter_ && tagsueber_},
{"Hallenbad", !(ferien_ && wochenende_)},
{"Wandern im Dunkelwald", schoenwetter_ && tagsueber_},
{"Freikurs Musik", abends_ && schulzeit_},
{"Brotbackkurs", wochenende_ && schlechtwetter},
{"Schieferbergwerk", tagsueber_ || (wochenende_ && ferien_)},
{"Go-Kurse", (wochenende_ && schlechtwetter) || (wochentag_ && abends_ && schoenwetter_)},
{"Billard", nur_erwachsene_ && (abends_ || wochenende_)},
{"Rennautofahrt", nur_erwachsene_ && tagsueber_ && ferien_ && wochentag_},
{"Open Air Kino", schoenwetter_ && (abends_ || wochenende_)},
{"Korbflechten", ferien_ && schlechtwetter && wochentag_},
{"Besuch des Wasserfalls", tagsueber_},
{"Zoobesuch", true}
};
public:
Plan(bool wochentag, bool schoenwetter, bool ferien, bool tagsueber, bool mit_kindern) :
wochentag_{ wochentag }, schoenwetter_{ schoenwetter }, ferien_{ ferien }, mit_kindern_{ mit_kindern } {}
friend std::ostream& operator<<(std::ostream& os, const Plan& p) {
for (const auto& v : p.vorschlaege_)
if (v.machbar) os << v.bezeichnung << "\n";
return os;
}
};
int main() {
// hier könnte man auch einen Dialog implementieren
constexpr auto wochentag{ true }, schoenwetter{ false }, ferien{ true }, tagsueber{ true }, mit_kindern{ false };
Plan plan{ wochentag, schoenwetter, ferien, tagsueber, mit_kindern };
std::cout << "Vorschlaege:\n" << plan << "\n";
}
Lösung von: Jens Kelm (@JKooP)
// NET 7.x | C# 11.x | VS-2022
var wochentag = Fragen("Wochentag (mo-fr)");
var schoenwetter = Fragen("Schönes Wetter");
var ferien = Fragen("Schulferien");
var tagsueber = Fragen("Tagsüber");
var mitKindern = Fragen("Ausflug mit Kindern");
Console.WriteLine(new Plan(wochentag, schoenwetter, ferien, tagsueber, mitKindern));
static bool Fragen(string frage) {
Console.Write($"Handelt es sich um {frage}? (j/n): ");
var anwort = Console.ReadLine();
if (!string.IsNullOrEmpty(anwort))
return anwort.ToLower()[0] == 'j';
return false;
}
public record class Plan (bool Wochentag, bool Schoenwetter, bool Ferien, bool Tagsueber, bool MitKindern) {
private static readonly List<(string Bezeichnung, bool Machbar)> _vorschlaege = new();
private bool Wochenende => !Wochentag;
private bool Schlechtwetter => !Schoenwetter;
private bool Schulzeit => !Ferien;
private bool Abends => !Tagsueber;
private bool NurErwachsende => !MitKindern;
private void SetzeVorschlaege() {
_vorschlaege.Add(("Kegeln", Abends || Wochenende));
_vorschlaege.Add(("Hallenbad", !(Ferien && Wochenende)));
_vorschlaege.Add(("Wandern im Dunkelwald", Schoenwetter && Tagsueber));
_vorschlaege.Add(("Freikurs Musik", Abends && Schulzeit));
_vorschlaege.Add(("Brotbackkurs", Wochenende && Schlechtwetter));
_vorschlaege.Add(("Schieferbergwerk", Tagsueber || (Wochenende && Ferien)));
_vorschlaege.Add(("Go-Kurse", (Wochenende && Schlechtwetter) || (Wochentag && Abends && Schoenwetter)));
_vorschlaege.Add(("Billard", NurErwachsende && (Abends || Wochenende)));
_vorschlaege.Add(("Rennautofahrt", NurErwachsende && Tagsueber && Ferien && Wochentag));
_vorschlaege.Add(("Open Air Kino", Schoenwetter && (Abends || Wochenende)));
_vorschlaege.Add(("Korbflechten", Ferien && Schlechtwetter && Wochentag));
_vorschlaege.Add(("Besuch des Wasserfalls", Tagsueber));
_vorschlaege.Add(("Zoobesuch", true));
}
public override string ToString() {
SetzeVorschlaege();
return string.Join("\n", _vorschlaege.Where(x => x.Machbar).Select(x => x.Bezeichnung).ToArray());
}
}
Lösung von: Jens Kelm (@JKooP)
'VBA
' Module:
' Main
Public Type Vorschlag
bez As String
mb As Boolean
End Type
Sub Main()
Dim p As New Plan
Const wochentag As Boolean = True
Const schoenwetter As Boolean = False
Const ferien As Boolean = True
Const tagsueber As Boolean = True
Const mitKindern As Boolean = True
p.Init wochentag, schoenwetter, ferien, tagsueber, mitKindern
Debug.Print p.ToString
End Sub
' Klassenmodule:
' Plan
Private m_wochentag As Boolean, m_wochenende As Boolean
Private m_schoenwetter As Boolean, m_schlechtwetter As Boolean
Private m_ferien As Boolean, m_schulzeit As Boolean
Private m_tagsueber As Boolean, m_abends As Boolean
Private m_mitKindern As Boolean, m_nurErwachsene As Boolean
Private vs(13) As Vorschlag
Private Sub Invert()
m_wochenende = Not m_wochentag
m_schlechtwetter = Not m_schoenwetter
m_schulzeit = Not m_ferien
m_abends = Not m_tagsueber
m_nurErwachsene = Not m_mitKindern
End Sub
Sub SetzeVorschlaege()
vs(0).bez = "Kegeln": vs(0).mb = m_abends Or m_tagsueber
vs(1).bez = "Freibad": vs(1).mb = schoenwetter And m_tagsueber
vs(2).bez = "Hallenbad": vs(2).mb = Not (m_ferien And m_wochenende)
vs(3).bez = "Wandern im Dunkelwald": vs(3).mb = m_schoenwetter And m_tagsueber
vs(4).bez = "Freikurs Musik": vs(4).mb = m_abends And m_schulzeit
vs(5).bez = "Brotbackkurs": vs(5).mb = m_wochende And m_schlechtwetter
vs(6).bez = "Schieferbergwerk": vs(6).mb = m_tagsueber Or (m_wochenende And m_ferien)
vs(7).bez = "Go-Kurse": vs(7).mb = (m_wochenende And m_schlechtwetter) Or (m_wochentag And m_abends And m_schoenwetter)
vs(8).bez = "Billard": vs(8).mb = m_nurErwachsene And (m_abends Or m_wochenende)
vs(9).bez = "Rennautofahren": vs(9).mb = m_nurErwachsene And m_tagsueber And m_ferien And m_wochentag
vs(10).bez = "Open Air Kino": vs(10).mb = m_schoenwetter And (m_abends Or m_wochenende)
vs(11).bez = "Korbflechten": vs(11).mb = m_ferien And m_schlechtwetter And m_wochentag
vs(12).bez = "Besuch des Wasserfalls": vs(12).mb = m_tagsueber
vs(13).bez = "Zoobesuch": vs(13).mb = True
End Sub
Public Sub Init(wochentag As Boolean, schoenwetter As Boolean, ferien As Boolean, tagsueber As Boolean, mitKindern As Boolean)
m_wochentag = wochentag
m_schoenwetter = schoenwetter
m_ferien = ferien
m_tagsueber = tagsueber
m_mitKindern = mitKindern
Invert
SetzeVorschlaege
End Sub
Public Function ToString()
Dim v As Variant
Dim s As String
For i = LBound(vs) To UBound(vs)
If vs(i).mb = True Then
s = s & vs(i).bez & vbNewLine
End If
Next
ToString = s
End Function
Lösung von: Jens Kelm (@JKooP)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 1.5 |
Schwierigkeit: | Leicht |
Webcode: | 54d5-o0ns |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |