Übungen / Aufgaben zu Objective-C
0 Lösungen
Simulation des Monty-Hall-Problems
Das Monty-Hall-Problem ist eines der erstaunlichsten Paradoxa der Wahrscheinlichkeitsrechnung und ein sehr gutes Beispiel dafür, wie durch eine (teilweise bewusst) irreführende Fragestellung der Blick auf die Problemlösung verschleiert werden kann. Selbst gestandene Mathematiker sollen sich daran schon die Zähne ausgebissen und getäuscht haben, obwohl die Lösung doch recht einfach ist.
Das Problem: Beteiligt sind ein Kandidat, ein Moderator und drei verschlossene Container. In einem der drei Container befindet sich der Hauptgewinn, in den zwei anderen jeweils ein Trostpreis. Der Moderator, der weiss, in welchem Container sich der Hauptgewinn befindet, bittet den Kandidaten, den "Hauptgewinn-Container" zu erraten. Der Kandidat entscheidet sich bspw. für Container # 1. Daraufhin geht der Moderator zu einem anderen Container mit Trostpreisinhalt, öffnet diesen Container und bietet dem Kandidaten gleichzeitig an, seine Wahlentscheidung noch einmal zu überdenken und gegebenenfalls zu wechseln.
Wie soll sich der Kandidat entscheiden? Es ist klar, dass sich in einem der zwei noch verschlossenen Container der Hauptgewinn befindet, in welchem, ist nur mit einer Wahrscheinlichkeit von 50 % bekannt. Wir wollen nun von zwei unterschiedlichen Kandidatentypen ausgehen: Typ 1 (konventioneller Typ) sagt sich, bei einer 50 : 50 Chance ist es egal, ob man wechselt, aber die Erfahrung sagt ihm, dass oftmals der erste Gadanke der beste ist, also entscheidet sich Typ 1 für NICHT WECHSELN. Typ 2 (gutgläubiger Typ) denk sich, wenn der Moderator ihm schon die Chance zum Wechseln anbietet, sollte er diese wahrnehmen, denn der Moderator würde ihm sicher nichts nachteiliges anbieten, also entscheidet sich Typ 2 für WECHSELN.
Mit der Simulation soll statistisch bekräftigt werden, ob (a) WECHSELN vorteilhaft ist, (b) gar keinen Einfluss hat oder (c) sogar nachteilig wäre. Wer Lust hat, kann das Simulationsergebnis auch noch zu erklären versuchen.
Im Bild ist exemplarisch eine Gewinnverteilung für die zwei Kandidaten-Typen nach vier Spielversuchen (Simulationen) dargestellt. Vier Versuche sind allerdings zu wenig, um sich bereits eine Meinung bilden zu können.
Das Problem: Beteiligt sind ein Kandidat, ein Moderator und drei verschlossene Container. In einem der drei Container befindet sich der Hauptgewinn, in den zwei anderen jeweils ein Trostpreis. Der Moderator, der weiss, in welchem Container sich der Hauptgewinn befindet, bittet den Kandidaten, den "Hauptgewinn-Container" zu erraten. Der Kandidat entscheidet sich bspw. für Container # 1. Daraufhin geht der Moderator zu einem anderen Container mit Trostpreisinhalt, öffnet diesen Container und bietet dem Kandidaten gleichzeitig an, seine Wahlentscheidung noch einmal zu überdenken und gegebenenfalls zu wechseln.
Wie soll sich der Kandidat entscheiden? Es ist klar, dass sich in einem der zwei noch verschlossenen Container der Hauptgewinn befindet, in welchem, ist nur mit einer Wahrscheinlichkeit von 50 % bekannt. Wir wollen nun von zwei unterschiedlichen Kandidatentypen ausgehen: Typ 1 (konventioneller Typ) sagt sich, bei einer 50 : 50 Chance ist es egal, ob man wechselt, aber die Erfahrung sagt ihm, dass oftmals der erste Gadanke der beste ist, also entscheidet sich Typ 1 für NICHT WECHSELN. Typ 2 (gutgläubiger Typ) denk sich, wenn der Moderator ihm schon die Chance zum Wechseln anbietet, sollte er diese wahrnehmen, denn der Moderator würde ihm sicher nichts nachteiliges anbieten, also entscheidet sich Typ 2 für WECHSELN.
Mit der Simulation soll statistisch bekräftigt werden, ob (a) WECHSELN vorteilhaft ist, (b) gar keinen Einfluss hat oder (c) sogar nachteilig wäre. Wer Lust hat, kann das Simulationsergebnis auch noch zu erklären versuchen.
Im Bild ist exemplarisch eine Gewinnverteilung für die zwei Kandidaten-Typen nach vier Spielversuchen (Simulationen) dargestellt. Vier Versuche sind allerdings zu wenig, um sich bereits eine Meinung bilden zu können.
0 Lösungen
Nachbar-Dupletten (Arrays)
Es sollen die Anzahl von den Nachbar-Dupletten eines Zahlen-Arrays ermittelt werden.
Die Nachbar-Dupletten sind gleiche benachbarte Zahlen in einem Array.
Es soll außerdem auf folgendes geachtet werden:
Die Nachbardupletten sind genau nur für zwei benachbarte Mitglieder definiert - sollte ein drittes Mitglied dabei benachbart sein, wird es nicht mitgezählt, weil es noch einen gleichen Nachbar braucht.
bspw.: Array = [3,3,7] : Ausgabe = 1
Array = [3,3,3] : Ausgabe = 1 ( Die Mitglieder von Index 0 und 1 sind benachbart, der Index 2 braucht auch ein Nachbar aber hat keinen
Array = [3,3,3,3] : Ausgabe = 2
Array = [0, 3, 3, 3, 2, 7, 7, 7, 7, 3, 2, 1, 1, -2, 4, 4, 8, 9, 8, 6 ] : Ausgabe = 5
Entnommen aus dieser Aufgabenstellung: fotos-hochladen.net
Die Nachbar-Dupletten sind gleiche benachbarte Zahlen in einem Array.
Es soll außerdem auf folgendes geachtet werden:
Die Nachbardupletten sind genau nur für zwei benachbarte Mitglieder definiert - sollte ein drittes Mitglied dabei benachbart sein, wird es nicht mitgezählt, weil es noch einen gleichen Nachbar braucht.
bspw.: Array = [3,3,7] : Ausgabe = 1
Array = [3,3,3] : Ausgabe = 1 ( Die Mitglieder von Index 0 und 1 sind benachbart, der Index 2 braucht auch ein Nachbar aber hat keinen
Array = [3,3,3,3] : Ausgabe = 2
Array = [0, 3, 3, 3, 2, 7, 7, 7, 7, 3, 2, 1, 1, -2, 4, 4, 8, 9, 8, 6 ] : Ausgabe = 5
Entnommen aus dieser Aufgabenstellung: fotos-hochladen.net
0 Lösungen
Zeichensatz zu Umlauten
Es soll ein Programm geschrieben werden, welches Zeichensätze aus einem String - wie zum Beispiel "AE", "OE", "UE" oder "SS" - in die Entsprechenden Umlaute umwandelt - "AE" zu "Ä", "OE" zu "Ö" u.s.w.
Hierbei sollte auf die Korrekte Umsetzung der Wörter geachtet werden, hierfür einige Beispiele:
STOSSDAEMPFER = STOßDÄMPFER
STEUERKETTE = STEUERKETTE
KASSE = KASSE
HUELSE = HÜLSE
u.s.w.
Hierbei sollte auf die Korrekte Umsetzung der Wörter geachtet werden, hierfür einige Beispiele:
STOSSDAEMPFER = STOßDÄMPFER
STEUERKETTE = STEUERKETTE
KASSE = KASSE
HUELSE = HÜLSE
u.s.w.
0 Lösungen
Base64 - Kodierung/-Dekodierung
Base64 ist ein Verfahren zur Kodierung von 8-Bit-Binärdaten und wird häufig zum Kodieren von Email-Anhängen verwendet.
Schreibe wahlweise einen Base64-Encoder oder einen Base64-Decoder. Wer Lust hat, kann natürlich auch beide Funktionen in einem Programm kombinieren.
Schreibe wahlweise einen Base64-Encoder oder einen Base64-Decoder. Wer Lust hat, kann natürlich auch beide Funktionen in einem Programm kombinieren.
0 Lösungen
Lösen eines linearen Gleichungssystems
Schreibe ein Programm, das lineare Gleichungssysteme lösen kann.
Im Anhang ist eine .html Datei (kann im Browser geöffnet werden).
Bei der Funktion, die berechnet wird, handelt es sich um ein Polynom 5. Grades.
Was gibt das html Dokument für f(1000) aus?
Es ist hilfreich, die berechnete Funktion zu kennen, um die Frage zu beantworten.
Im Anhang ist eine .html Datei (kann im Browser geöffnet werden).
Bei der Funktion, die berechnet wird, handelt es sich um ein Polynom 5. Grades.
Was gibt das html Dokument für f(1000) aus?
Es ist hilfreich, die berechnete Funktion zu kennen, um die Frage zu beantworten.
0 Lösungen
Wassereimer umfüllen.
In einer Personengruppe hat jeder einen oder mehrere Wasereimer. Die Eimer unterscheiden sich in Volumen und Füllstand.
Das Wasser soll so umgefüllt werden, dass am Ende jede Person gleich viel Wasser hat.
Dabei muss immer komplett umgefüllt werden, das heißt bis der eine Eimer leer oder der andere voll ist.
Finde eine Lösung, die die Zahl der Umfüllvorgänge minimiert.
Beispiel - es wird aktueller Füllstand (maximaler Füllstand) angegeben:
Das Wasser soll so umgefüllt werden, dass am Ende jede Person gleich viel Wasser hat.
Dabei muss immer komplett umgefüllt werden, das heißt bis der eine Eimer leer oder der andere voll ist.
Finde eine Lösung, die die Zahl der Umfüllvorgänge minimiert.
Beispiel - es wird aktueller Füllstand (maximaler Füllstand) angegeben:
Konsolenausgabe:
Anzahl der Personen: 2
Person 1:
Anzahl der Eimer: 2
Aktueller Füllstand von Eimer 1: 7
Maximaler Füllstand von Eimer 1: 7
Aktueller Füllstand von Eimer 2: 2
Maximaler Füllstand von Eimer 2: 7
Person 2:
Anzahl der Eimer: 2
Aktueller Füllstand von Eimer 1: 5
Maximaler Füllstand von Eimer 1: 7
Aktueller Füllstand von Eimer 2: 2
Maximaler Füllstand von Eimer 2: 9
7(7) 2(7) | 5(7) 2(9)
7(7) 4(7) | 5(7) 0(9)
7(7) 4(7) | 0(7) 5(9)
3(7) 4(7) | 0(7) 9(9)
3(7) 7(7) | 0(7) 6(9)
3(7) 7(7) | 6(7) 0(9)
3(7) 0(7) | 6(7) 7(9)
1(7) 0(7) | 6(7) 9(9)
1(7) 7(7) | 6(7) 2(9)
Konsolenausgabe:
Anzahl der Personen: 2
Person 1:
Anzahl der Eimer: 2
Aktueller Füllstand von Eimer 1: 1
Maximaler Füllstand von Eimer 1: 2
Aktueller Füllstand von Eimer 2: 3
Maximaler Füllstand von Eimer 2: 4
Person 2:
Anzahl der Eimer: 2
Aktueller Füllstand von Eimer 1: 5
Maximaler Füllstand von Eimer 1: 6
Aktueller Füllstand von Eimer 2: 7
Maximaler Füllstand von Eimer 2: 8
keine Lösung
0 Lösungen
Ableitungen berechnen
Schreibe ein Programm, das Funktionen differenzieren kann.
Dabei gibt der Nutzer die Funktion ein und lässt sich die Ableitung berechnen.
Beispiel:
Eine Termvereinfachung wäre ein schönes Extra, aber vor allem geht es um Korrektheit.
Dabei gibt der Nutzer die Funktion ein und lässt sich die Ableitung berechnen.
Beispiel:
Konsolenausgabe:
Ableitungen berechnen
f(x) = x^3
f'(x) = x^2*3
f(x) = x*sin(3*x^2)+4
f'(x) = sin(x^2*3)+x*cos(x^2*3)*x*3*2
f(x) = sin(x)/x
f'(x) = (x*cos(x)-sin(x))/x^2
Eine Termvereinfachung wäre ein schönes Extra, aber vor allem geht es um Korrektheit.
0 Lösungen
Substitutionschiffren knacken
Bei einer Substitutionschiffre werden Buchstaben durch andere Buchstaben ersetzt.
Dadurch bleiben die Häufigkeitsverteilungen der Buchstaben allerdings erhalten, weshalb etwa ein 'e' leicht erkannt werden kann.
Für diese Aufgabe soll aber ein Wörterbuch (z.B. von der Uni Kiel, benötigt aber etwas Nachbearbeitung) verwendet werden, um die ursprüngliche Nachricht zu erhalten.
So ist es zwar schwer, eine komplett richtige Dekodierung zu erhalten (da nicht alle Wörter im Wörterbuch enthalten sind), aber man kann lesbare Ergebnisse erzielen.
Im Anhang befinden sich Texte aus zufälligen Artikeln der deutschsprachigen Wikipedia. Es ist jeweils mindestens die Hälfte der vorkommenden Wörter im verlinkten Wörterbuch enthalten.
Dadurch bleiben die Häufigkeitsverteilungen der Buchstaben allerdings erhalten, weshalb etwa ein 'e' leicht erkannt werden kann.
Für diese Aufgabe soll aber ein Wörterbuch (z.B. von der Uni Kiel, benötigt aber etwas Nachbearbeitung) verwendet werden, um die ursprüngliche Nachricht zu erhalten.
So ist es zwar schwer, eine komplett richtige Dekodierung zu erhalten (da nicht alle Wörter im Wörterbuch enthalten sind), aber man kann lesbare Ergebnisse erzielen.
Im Anhang befinden sich Texte aus zufälligen Artikeln der deutschsprachigen Wikipedia. Es ist jeweils mindestens die Hälfte der vorkommenden Wörter im verlinkten Wörterbuch enthalten.
0 Lösungen
Ermitteln der IP-Klasse
Schreibe ein Programm, was nach einer IP-Adresse fragt. Anschließend soll die IP-Klasse ermittelt und ausgegeben werden.
0 Lösungen
Digitale Kalorienüberwachung
Erstelle ein Programm, das dich nach deinen gegessenen Nahrungsmitteln und deren Kalorien fragt. Diese Infos sollen in einem Dictionary (ggf. auch Liste oder Array) gespeichert werden. Nach jeder Nahrungsmitteleingabe soll gefragt werden, ob du noch weitere Nahrungsmittel gegessen hast.
Wurden keine weiteren Nahrungsmittel verzehrt, soll ausgerechnet werden, wie viele Kalorien du an diesem Tag aufgenommen hast.
Zusatz: Bei 60 Minuten schwimmen verbrennt man ungefähr 400 Karolinen. 30 Minuten spazieren verbrennt 50 Kalorien. Wie lange müsste man spazieren oder schwimmen, um die heute zugenommenen Kalorien wieder zu verbrennen? Berechne diese Werte und gebe sie mit den Verbrannten Kalorien aus.
Wurden keine weiteren Nahrungsmittel verzehrt, soll ausgerechnet werden, wie viele Kalorien du an diesem Tag aufgenommen hast.
Zusatz: Bei 60 Minuten schwimmen verbrennt man ungefähr 400 Karolinen. 30 Minuten spazieren verbrennt 50 Kalorien. Wie lange müsste man spazieren oder schwimmen, um die heute zugenommenen Kalorien wieder zu verbrennen? Berechne diese Werte und gebe sie mit den Verbrannten Kalorien aus.
0 Lösungen
Tante Emmas Tageseinnahmen
Tante Emma ist die Geschäftsleiterin von 5 Tante-Emma-Läden. Sie möchte ermitteln, wie hoch der Umsatz der einzelnen Filialen vom letzten Tag war.
Schreibe ein Programm in dem abgefragt wird, wie viel Geld in den 5 Läden am Anfang des Tages vorhanden war und wie viel Geld sich am Ende des Tages in der Kasse befand. Außerdem möchte Tante Emma wissen, wie viel Umsatz jeder einzelne Laden gemacht hat und welche der 5 Läden den größten bzw. den geringsten Umsatz erzielt hat. Speichere alle Informationen in einem seperaten Array ab, sodass die Informationen nach der Eingabe der Kassenstände und Umsatzberechnungen für jeden Laden, in einem eigenen Array gespeichert wird. Gebe anschließend für jeden Laden die Informationen wieder aus uns bestimme den Laden mit dem größten bzw. kleinsten Umsatz.
Schreibe ein Programm in dem abgefragt wird, wie viel Geld in den 5 Läden am Anfang des Tages vorhanden war und wie viel Geld sich am Ende des Tages in der Kasse befand. Außerdem möchte Tante Emma wissen, wie viel Umsatz jeder einzelne Laden gemacht hat und welche der 5 Läden den größten bzw. den geringsten Umsatz erzielt hat. Speichere alle Informationen in einem seperaten Array ab, sodass die Informationen nach der Eingabe der Kassenstände und Umsatzberechnungen für jeden Laden, in einem eigenen Array gespeichert wird. Gebe anschließend für jeden Laden die Informationen wieder aus uns bestimme den Laden mit dem größten bzw. kleinsten Umsatz.
0 Lösungen
Zeitlich veränderte Grußformeln
Erstellen Sie eine Anwendung, in der der Benutzer aufgefordert wird, seinen Vor- und Nachnamen einzugeben.
Die Anwendung soll den Namen mit einer Begrüßung ausgeben.
Berücksichtigen Sie, dass die Begrüßung zwischen 0 und 12 Uhr „Guten Morgen“, ab 12 bis 18 Uhr „Guten Tag“ und ab 18 bis 0 Uhr „Guten Abend“ lauten soll.
Die Anwendung soll den Namen mit einer Begrüßung ausgeben.
Berücksichtigen Sie, dass die Begrüßung zwischen 0 und 12 Uhr „Guten Morgen“, ab 12 bis 18 Uhr „Guten Tag“ und ab 18 bis 0 Uhr „Guten Abend“ lauten soll.