Übungen / Aufgaben zu Objective-C
0 Lösungen
Berechnen von Pi mit Zufallszahlen
Man kann die Kreiszahl Pi näherungsweise bestimmen, indem man Zufallszahlen generiert:
Man stelle sich einen Kreis mit Mittelpunkt (0/0) und Radius 1 vor. Es werden zufällig Punkte erzeugt, bei denen sowohl x als auch y im Intervall [0;1[ liegen. Dann wird die Entfernung dieser Punkte zum Ursprung ermittelt. Ist diese Entfernung kleiner als 1, so liegt der Punkt innerhalb des Kreises.
Setzt man bei einer ausreichenden Zahl von Zufallspunkten die Zahl der Treffer in das richtigen Verhältnis zur Gesamtzahl der Punkte, so erhält man einen Näherungswert für Pi (Pi = 4 * AnzahlTreffer / AnzahlGesamt).
Schreibe ein Programm, das auf oben beschriebene Weise Pi berechnet.
Man stelle sich einen Kreis mit Mittelpunkt (0/0) und Radius 1 vor. Es werden zufällig Punkte erzeugt, bei denen sowohl x als auch y im Intervall [0;1[ liegen. Dann wird die Entfernung dieser Punkte zum Ursprung ermittelt. Ist diese Entfernung kleiner als 1, so liegt der Punkt innerhalb des Kreises.
Setzt man bei einer ausreichenden Zahl von Zufallspunkten die Zahl der Treffer in das richtigen Verhältnis zur Gesamtzahl der Punkte, so erhält man einen Näherungswert für Pi (Pi = 4 * AnzahlTreffer / AnzahlGesamt).
Schreibe ein Programm, das auf oben beschriebene Weise Pi berechnet.
0 Lösungen
Verschlüsseln durch Verstecken
Ein Teilgebiet der Kryptographie ist die Steganographie. Hier geht es darum Informationen so zu verstecken, dass andere gar nicht auf die Idee kommen, nach versteckten Informationen zu suchen.
Ein Beispiel, um eine Datei in einem Bild zu verstecken:
Erstelle ein Bytearray mit folgendem Inhalt: die ersten 4 Byte geben die Größe der versteckten Datei in Byte an (big Endian). Danach folgt der Dateiname in ASCII Codierung. Nach einem 0-Byte zu Trennung kommt die zu versteckende Datei selbst.
Diese Daten werden nun in einem Bild versteckt, indem die niederwertigsten beiden Bit eines Pixels für rot, grün und blau überschrieben werden, sodass in jedes Pixel 6 Bit passen. Es wird im oberen linken Eck gestartet und dann die Zeile aufgefüllt, anschließend in der nächsten Zeile fortgefahren.
Das Bild im Anhang wurde auf die beschriebene Weise manipuliert.
Schreibe ein Programm, das die versteckten Daten wieder sichtbar macht.
Ein Beispiel, um eine Datei in einem Bild zu verstecken:
Erstelle ein Bytearray mit folgendem Inhalt: die ersten 4 Byte geben die Größe der versteckten Datei in Byte an (big Endian). Danach folgt der Dateiname in ASCII Codierung. Nach einem 0-Byte zu Trennung kommt die zu versteckende Datei selbst.
Diese Daten werden nun in einem Bild versteckt, indem die niederwertigsten beiden Bit eines Pixels für rot, grün und blau überschrieben werden, sodass in jedes Pixel 6 Bit passen. Es wird im oberen linken Eck gestartet und dann die Zeile aufgefüllt, anschließend in der nächsten Zeile fortgefahren.
Das Bild im Anhang wurde auf die beschriebene Weise manipuliert.
Schreibe ein Programm, das die versteckten Daten wieder sichtbar macht.
0 Lösungen
Gesellige Zahlen finden
Eine Zahl ist dann vollkommen, wenn sie gleich der Summe ihrer Teiler ist. (Bsp.: die Teiler von 6 sind 1,2,3 und 1+2+3=6)
Es gibt aber auch Zahlenpaare, die jeweils die andere Zahl als Teilersumme besitzen (Bsp.: 220 und 284), befreundete Zahlen.
Dies lässt sich mit den geselligen Zahlen sogar noch steigern: hier ergibt nicht die Teilersumme von zwei Zahlen die jeweils andere, sondern es lässt sich eine Kette aus mehreren Zahlen bilden (Bsp.: 12496, 14288, 15472, 14536, 14264)
Finde alle Gruppen von geselligen Zahlen, bei denen keine eine Obergrenze (z.B. 10^7) übersteigt.
Es gibt aber auch Zahlenpaare, die jeweils die andere Zahl als Teilersumme besitzen (Bsp.: 220 und 284), befreundete Zahlen.
Dies lässt sich mit den geselligen Zahlen sogar noch steigern: hier ergibt nicht die Teilersumme von zwei Zahlen die jeweils andere, sondern es lässt sich eine Kette aus mehreren Zahlen bilden (Bsp.: 12496, 14288, 15472, 14536, 14264)
Finde alle Gruppen von geselligen Zahlen, bei denen keine eine Obergrenze (z.B. 10^7) übersteigt.
0 Lösungen
Giuga-Zahlen berechnen
Eine natürliche Zahl n ist eine Giuga-Zahl, wenn alle ihre Primteiler p den Wert n/p - 1 teilen.
Schreibe ein Programm welches alle Giuga-Zahlen bis zu einer festen Obergrenze ausgibt.
Erläuterung zu einer Giuga-Zahl findest du hier: Wikipedia
Schreibe ein Programm welches alle Giuga-Zahlen bis zu einer festen Obergrenze ausgibt.
Erläuterung zu einer Giuga-Zahl findest du hier: Wikipedia
0 Lösungen
Alle Harshad-Zahlen von 1 bis 100 berechnen
Eine natürliche Zahl heißt Harshad-Zahl, wenn Sie durch ihre Quersummer teilbar ist.
Beispiel: 777 ist durch 7 + 7 + 7 = 21 teilbar und ist damit eine Harshad-Zahl.
Schreibe ein Programm welches alle Harshad-Zahlen von 1 bis 100 berechnet und am Bildschirm ausgibt.
Beispiel: 777 ist durch 7 + 7 + 7 = 21 teilbar und ist damit eine Harshad-Zahl.
Schreibe ein Programm welches alle Harshad-Zahlen von 1 bis 100 berechnet und am Bildschirm ausgibt.
0 Lösungen
Verteilung beim Würfeln mit zwei Würfeln
Angenommen du wirfst sehr viel mal mit zwei Würfeln. Wie sieht die Verteilung der Summe der geworfenen Würfelzahlen aus?
Vorgaben:
Simuliere möglichst zufällig sehr viele Würfe mit zwei Standardwürfel(=1-6).
Mindestens 100'000 Würfe, je mehr desto besser. -> Performanter Code
Gib aus, wie die Verteilung der Summe der beiden Würfeln prozentual/im Verhältnis aussehen
Du musst in der Lösung auf dieser Seite eine gut sicht- und interpretierbare Darstellung der Verteilung haben, damit wir die Ergebnisse vergleichen können
Beispiel:
Vorgaben:
Simuliere möglichst zufällig sehr viele Würfe mit zwei Standardwürfel(=1-6).
Mindestens 100'000 Würfe, je mehr desto besser. -> Performanter Code
Gib aus, wie die Verteilung der Summe der beiden Würfeln prozentual/im Verhältnis aussehen
Du musst in der Lösung auf dieser Seite eine gut sicht- und interpretierbare Darstellung der Verteilung haben, damit wir die Ergebnisse vergleichen können
Beispiel:
Konsolenausgabe:
1. Wurf: 1 und 5 - Summe 6
2. Wurf: 4 und 2 - Summe 6
...
100000. Wurf: 3 und 1 - Summe 4
Ergebnis:
1 - 5%
2 - 7%
12 - 6%
0 Lösungen
Lösen eines Labyrinths
Schreibe ein Programm, das in der Lage ist, ein Labyrinth zu lösen.
Regeln:
- das Startfeld ist im Eck unten links, das Ziel ist oben rechts
- ein Feld kann nur dann betreten werden, wenn es direkt an das aktuelle Feld angrenzt (diagonale Felder zählen nicht als angrenzend)
- bei der Lösung darf jedes Feld nur einmal durchquert werden
Das Programm kann das Labyrinth z.B. aus einer Textdatei entgegennehmen und soll dann den Weg vom Start zum Ziel ausgeben (siehe Screenshot im Anhang).
Es sind Beispiellabyrinthe mit unterschiedlicher Größe angefügt. Diese sind alle eindeutig lösbar.
Bonusaufgabe:
Schreibe eine Funktion, die Breite und Höhe entgegennimmt und dann zufällig ein Labyrinth erzeugt.
Regeln:
- das Startfeld ist im Eck unten links, das Ziel ist oben rechts
- ein Feld kann nur dann betreten werden, wenn es direkt an das aktuelle Feld angrenzt (diagonale Felder zählen nicht als angrenzend)
- bei der Lösung darf jedes Feld nur einmal durchquert werden
Das Programm kann das Labyrinth z.B. aus einer Textdatei entgegennehmen und soll dann den Weg vom Start zum Ziel ausgeben (siehe Screenshot im Anhang).
Es sind Beispiellabyrinthe mit unterschiedlicher Größe angefügt. Diese sind alle eindeutig lösbar.
Bonusaufgabe:
Schreibe eine Funktion, die Breite und Höhe entgegennimmt und dann zufällig ein Labyrinth erzeugt.
0 Lösungen
Einfache Rechtschreibprüfung
Schreibe ein Programm, dass eine einfache Rechtschreibprüfung realisiert (ohne Wörterbuch).
Das Programm soll einen Text einlesen und folgendes als Fehler melden:
- doppelte Worte
- kein Großbuchstabe am Satzanfang
- Großbuchstaben oder Ziffern mitten im Wort
- Leerzeichen vor Satzendezeichen, kein Leerzeichen nach Satzendezeichen
- (weitere Prüfungen nach Belieben)
Die Fehlerausgabe soll folgende Form haben:
Fehler in Zeile x, Spalte y: <Fehlerart, wie oben angegeben>
Das Programm soll einen Text einlesen und folgendes als Fehler melden:
- doppelte Worte
- kein Großbuchstabe am Satzanfang
- Großbuchstaben oder Ziffern mitten im Wort
- Leerzeichen vor Satzendezeichen, kein Leerzeichen nach Satzendezeichen
- (weitere Prüfungen nach Belieben)
Die Fehlerausgabe soll folgende Form haben:
Fehler in Zeile x, Spalte y: <Fehlerart, wie oben angegeben>
0 Lösungen
Programm für Dateisuche (Dateifilter)
Realisiere einen Dateifilter. Das Programm soll einen Verzeichnispfad und eine Namenserweiterung , z.B. ".txt" abfragen und alle dazu passenden Dateien aus dem Verzeichnis auflisten (Dateiname genügt).
Erweiterung: es soll möglich sein mit einem Muster, z.B. "*log.[1-3].gz" nach Dateien zu suchen.
Erweiterung: es soll möglich sein mit einem Muster, z.B. "*log.[1-3].gz" nach Dateien zu suchen.
0 Lösungen
Wetterdaten abfragen und anzeigen
Schreibe ein Programm, welches Wetterdaten von einem Dienst abruft und einige Werte davon ausgibt.
Das Programm soll durch die Benutzereingabe die Stadt entgegen nehmen und zu dieser die aktuellen Wetterdaten ausgeben.
Vorschlag für einen einfachen und kostenlosen Dienst: openweathermap.org
Das Programm soll durch die Benutzereingabe die Stadt entgegen nehmen und zu dieser die aktuellen Wetterdaten ausgeben.
Vorschlag für einen einfachen und kostenlosen Dienst: openweathermap.org
0 Lösungen
Passwortgenerator mit Parametern
Erstelle ein Programm/Funktion welche/s ein zufälliges Passwort erzeugt.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
Als Parameter soll die Länge sowie die Art der darin vorkommenden Zeichen übergeben werden können.
Zur Auswahl sollen stehen: Kleinbuchstaben, Großbuchstaben, Zahlen und Sonderzeichen.
Jede beliebige Kombination der Parameter soll möglich sein.
0 Lösungen
IBAN Checksumme prüfen
Schreibe eine Funktion, welche einen IBAN als Zeichenfolge entgegen nimmt.
Bei diese Zeichenfolge soll überprüft werden, ob die Checksumme/Prüfsumme für eine gültige IBAN stimmt.
Die unterschiedliche Schreibweisen (mit und ohne Freiraum) sowie die unterschiedlichen Längen je nach Land sind ebenfalls zu berücksichtigen.
Beispiele der Schreibweisen:
DE19 1234 1234 1234 1234 12
DE19-1234-1234-1234-1234-12
DE19123412341234123412
AT19 1234 1234 1234 1234
CH19 1234 1234 1234 1234 1
Bei diese Zeichenfolge soll überprüft werden, ob die Checksumme/Prüfsumme für eine gültige IBAN stimmt.
Die unterschiedliche Schreibweisen (mit und ohne Freiraum) sowie die unterschiedlichen Längen je nach Land sind ebenfalls zu berücksichtigen.
Beispiele der Schreibweisen:
DE19 1234 1234 1234 1234 12
DE19-1234-1234-1234-1234-12
DE19123412341234123412
AT19 1234 1234 1234 1234
CH19 1234 1234 1234 1234 1