Übungen / Aufgaben zu Objective-C
0 Lösungen
PDF aus CSV erstellen
Hallo zusammen,
heute sollt ihr eine CSV-Datei Zeile für Zeile einlesen, welche in etwa so aussehen sollte:
Danach sollt ihr aus den eingelesenen Informationen eine PDF-Datei erstellen.
Für jede eingelesene Zeile soll eine neue Seite angefangen werden.
Die Gestaltung der Rechnung / des PDF-Dokuments ist euch überlassen,
wer eine grobe Vorstellung braucht kann dies klick mich als Vorlage nehmen.
Viel Spaß :)
heute sollt ihr eine CSV-Datei Zeile für Zeile einlesen, welche in etwa so aussehen sollte:
Firmenname;PLZ;Ort;Straße;Hausnummer;...;Gegenstand;Preis
Firmenname;PLZ;Ort;Straße;Hausnummer;...;Gegenstand;Preis
Firmenname;PLZ;Ort;Straße;Hausnummer;...;Gegenstand;Preis
...
Danach sollt ihr aus den eingelesenen Informationen eine PDF-Datei erstellen.
Für jede eingelesene Zeile soll eine neue Seite angefangen werden.
Die Gestaltung der Rechnung / des PDF-Dokuments ist euch überlassen,
wer eine grobe Vorstellung braucht kann dies klick mich als Vorlage nehmen.
Viel Spaß :)
0 Lösungen
Rekursieve Fakultät von n
Erstelle ein programm das n! = 120 zum beispiel nach n auflöst.
Ansatz: 5! =5*4*3*2*1 also müsste n=120/5/4/3/2/1
Ansatz: 5! =5*4*3*2*1 also müsste n=120/5/4/3/2/1
0 Lösungen
Schleife, Randem, und switch und DataTime , TimeSpan.
Erstellen Sie ein Programm, welches dem Benutzer 10 Rechenaufgaben stellt.
Die Aufgaben bestehen jeweils aus zwei zufällig bestimmten Zahlen zwischen 1 und 10 und dem zufällig gewählten Operator (Möglichkeiten: + , - , *)
Ist das Ergebnis inkorrekt, wird folgender Text ausgegeben
"Das Ergebnis ist falsch!"
Dies geschieht solange, bis der Benutzer die Aufgabe richtig gelöst hat.
Nachdem die 10 Aufgaben gelöst sind, soll auf der Konsole die benötigte Zeit ausgegeben werden.
Die Aufgaben bestehen jeweils aus zwei zufällig bestimmten Zahlen zwischen 1 und 10 und dem zufällig gewählten Operator (Möglichkeiten: + , - , *)
Ist das Ergebnis inkorrekt, wird folgender Text ausgegeben
"Das Ergebnis ist falsch!"
Dies geschieht solange, bis der Benutzer die Aufgabe richtig gelöst hat.
Nachdem die 10 Aufgaben gelöst sind, soll auf der Konsole die benötigte Zeit ausgegeben werden.
0 Lösungen
Programmierung von MasterMind
MasterMind ist ein deduktives Spiel, das insbesondere Anfang der 70er Jahre sehr beliebt war.
Ziel des Spiels ist es, einen Geheimcode zu entschlüsseln.
In der klassischen Variante ordnet ein Spieler, genannt "codemaker", eine Sequenz von vier Symbolen
geheim an. Praktisch geschieht dies mittels unterschiedlich oder teilweise bzw. gänzlich
gleich gefärbter Pins oder Murmeln in einer Reihe, wobei maximal sechs Farben zur Verfügung stehen.
Ein zweiter Spieler, genannt "codebreaker", versucht durch Testmuster, gleichfalls bestehend aus vier gereihten
Symbolen (Pins/Murmeln), den Code zu erraten. Hätte der codebreaker 6 * 6 * 6 * 6 = 1.296 Versuche zur Verfügung,
wäre dies kein Problem, allerdings wird die Anzahl der Tests als Spielregel auf zwölf (manchmal weniger) begrenzt.
Als Responds auf ein Testmuster muss der codemaker zwei Informationen geben:
1.) Wieviele Symbole im Testmuster stehen an exakt der gleicher Stelle wie im Geheimmuster (im Falle vier, wäre das
Spiel für den codebreaker gewonnen) und
2.) wieviele Symbole (Pin-/Murmelfarben) sind sowohl im Geheim- als auch im Testmuster
vorhanden, allerdings nicht in übereinstimmender Position in der Reihe.
Die Programmieraufgabe bestehe nun darin, MasterMind interaktiv am PC zu simulieren, wobei der Computer als
codemaker fungiert, der zunächst per Zufallsgenerator das Geheimmuster erzeugt. Anschließend sind sukzessive
maximal zwölf Testmuster vom codebreaker (User) einzugeben und vom codemaker jeweils die zwei Fagen zu beantworten.
Anmerkung: MasterMind wurde auch von Mathematikern unter die Lupe genommen und bereits Mitte/Ende der 70er Jahre konnte
bewiesen werden, dass man es mit maximal fünf Testmustern lösen kann, sehr erstaunlich, oder? Daraufhin wurde
SuperMasterMind vorgeschlagen. Unterschied: Reihen mit fünf Symbolen und acht unterschiedlichen Pin-/Murmelfarben.
Wer MasterMind lediglich als schöne Spielerei ansieht, überlege bitte folgendes: Seit 1971 (release)
wurden bisher pro Jahr im Durchschnitt eine Million Spiele weltweit verkauft. Wärest Du der Erfinder und bekämest
als Lizenzgeber pro Exemplar 10 Cent, Du hättest finanziell ausgesorgt.
Ziel des Spiels ist es, einen Geheimcode zu entschlüsseln.
In der klassischen Variante ordnet ein Spieler, genannt "codemaker", eine Sequenz von vier Symbolen
geheim an. Praktisch geschieht dies mittels unterschiedlich oder teilweise bzw. gänzlich
gleich gefärbter Pins oder Murmeln in einer Reihe, wobei maximal sechs Farben zur Verfügung stehen.
Ein zweiter Spieler, genannt "codebreaker", versucht durch Testmuster, gleichfalls bestehend aus vier gereihten
Symbolen (Pins/Murmeln), den Code zu erraten. Hätte der codebreaker 6 * 6 * 6 * 6 = 1.296 Versuche zur Verfügung,
wäre dies kein Problem, allerdings wird die Anzahl der Tests als Spielregel auf zwölf (manchmal weniger) begrenzt.
Als Responds auf ein Testmuster muss der codemaker zwei Informationen geben:
1.) Wieviele Symbole im Testmuster stehen an exakt der gleicher Stelle wie im Geheimmuster (im Falle vier, wäre das
Spiel für den codebreaker gewonnen) und
2.) wieviele Symbole (Pin-/Murmelfarben) sind sowohl im Geheim- als auch im Testmuster
vorhanden, allerdings nicht in übereinstimmender Position in der Reihe.
Die Programmieraufgabe bestehe nun darin, MasterMind interaktiv am PC zu simulieren, wobei der Computer als
codemaker fungiert, der zunächst per Zufallsgenerator das Geheimmuster erzeugt. Anschließend sind sukzessive
maximal zwölf Testmuster vom codebreaker (User) einzugeben und vom codemaker jeweils die zwei Fagen zu beantworten.
Anmerkung: MasterMind wurde auch von Mathematikern unter die Lupe genommen und bereits Mitte/Ende der 70er Jahre konnte
bewiesen werden, dass man es mit maximal fünf Testmustern lösen kann, sehr erstaunlich, oder? Daraufhin wurde
SuperMasterMind vorgeschlagen. Unterschied: Reihen mit fünf Symbolen und acht unterschiedlichen Pin-/Murmelfarben.
Wer MasterMind lediglich als schöne Spielerei ansieht, überlege bitte folgendes: Seit 1971 (release)
wurden bisher pro Jahr im Durchschnitt eine Million Spiele weltweit verkauft. Wärest Du der Erfinder und bekämest
als Lizenzgeber pro Exemplar 10 Cent, Du hättest finanziell ausgesorgt.
0 Lösungen
Die beste Darlehensart berechnen
Schreibe ein Programm welches folgende Parameter übergeben bekommt:
- Nominalzins p.a.
- Laufzeit (Jahre)
- Darlehen (€)
Berechne dann anhand dieser Parameter welche der drei folgenden Darlehensarten am besten für den Kreditnehmer ist:
- Fälligkeitsdarlehen
- Ratendarlehen
- Annuitätendarlehen
... und gib die Ergebnisse aus, auch inwiefern sie sich untereinander unterscheiden - jeder Cent zählt! ;)
- Nominalzins p.a.
- Laufzeit (Jahre)
- Darlehen (€)
Berechne dann anhand dieser Parameter welche der drei folgenden Darlehensarten am besten für den Kreditnehmer ist:
- Fälligkeitsdarlehen
- Ratendarlehen
- Annuitätendarlehen
... und gib die Ergebnisse aus, auch inwiefern sie sich untereinander unterscheiden - jeder Cent zählt! ;)
0 Lösungen
Babylonisches Wurzelziehen / Heron-Verfahren / Heronsches Näherungsverfahren
Die zu schreibende Anwendung soll eine positive Zahl entgegennehmen und durch das Heron-Verfahren näherungsweise die Quadratwurzel berechnen.
Zusatz:
Es werden die einzelnen Schritte ausgegeben, siehe Beispiel.
Beispiel: mit Wurzel aus 12
~ Viel Spaß :)
Zusatz:
Es werden die einzelnen Schritte ausgegeben, siehe Beispiel.
Beispiel: mit Wurzel aus 12
...
Die Wurzel aus 12 ist zwischen 3.5 und 3.4
...
Die Wurzel aus 12 ist zwischen 3.45 und 3.46
...
~ Viel Spaß :)
0 Lösungen
Konvertieren von JSON <---> XML <---> CSV
- Schreibe ein Programm, welches eine Datei einlesen kann.
- Diese Datei soll in einem der folgenden Formate sein: CSV, XML, JSON
- Das Programm erkennt welches Format die eingelesene Datei hat und zeigt dies an (z.B. "Format: JSON")
- Dem Nutzer soll die Möglichkeit gegeben werden im Anschluss die Datei in einem der anderen beiden Formate abzuspeichern
Beispiel:
- Diese Datei soll in einem der folgenden Formate sein: CSV, XML, JSON
- Das Programm erkennt welches Format die eingelesene Datei hat und zeigt dies an (z.B. "Format: JSON")
- Dem Nutzer soll die Möglichkeit gegeben werden im Anschluss die Datei in einem der anderen beiden Formate abzuspeichern
Beispiel:
JSON wird eingelesen
JSON wird zu CSV umgewandelt
CSV wird als neue Datei abgespeichert
0 Lösungen
Programmierung eines Anagramm-Generators
Unter einem (vollständigen) Anagramm eines Basiswortes versteht man
sinnvolle Wörter, die aus den gleichen Buchstaben wie
das Basiswort zusammengesetzt sind. Z. B. sind zum Basiswort TOR die Wörter
ROT und ORT Anagramme. Die Folge OTR ist kein Anagramm (kein sinnvolles Wort).
Für den zu programmierenden Anagramm-Generator, der ein Basiswort entgegennehmen
und eine Liste sinnvoller Anagramme ausgeben soll (Bild 1), wird natürlich eine
Liste aller sinnvollen Wörter einer (natürlichen) Sprache benötigt. Mein Vorschlag
ist es, sich den Textfile germany.dic von
https://sourceforge.net/projects/germandict/
herunterzuladen. Er enthält knapp 2.000.000 Einträge "sinnvoller" deutscher Wörter,
darunter auch eines meiner Lieblingswörter:
Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz.
Dieses Wort steht in der Tat sogar im Duden, allerdings nur an Stelle zwei der Wurmwörter,
den ersten Platz hat
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung.
Ja, aber das nur zum Schmunzeln am Rande. Viel Spaß!
sinnvolle Wörter, die aus den gleichen Buchstaben wie
das Basiswort zusammengesetzt sind. Z. B. sind zum Basiswort TOR die Wörter
ROT und ORT Anagramme. Die Folge OTR ist kein Anagramm (kein sinnvolles Wort).
Für den zu programmierenden Anagramm-Generator, der ein Basiswort entgegennehmen
und eine Liste sinnvoller Anagramme ausgeben soll (Bild 1), wird natürlich eine
Liste aller sinnvollen Wörter einer (natürlichen) Sprache benötigt. Mein Vorschlag
ist es, sich den Textfile germany.dic von
https://sourceforge.net/projects/germandict/
herunterzuladen. Er enthält knapp 2.000.000 Einträge "sinnvoller" deutscher Wörter,
darunter auch eines meiner Lieblingswörter:
Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz.
Dieses Wort steht in der Tat sogar im Duden, allerdings nur an Stelle zwei der Wurmwörter,
den ersten Platz hat
Grundstücksverkehrsgenehmigungszuständigkeitsübertragungsverordnung.
Ja, aber das nur zum Schmunzeln am Rande. Viel Spaß!
0 Lösungen
Einfacher Namensgenerator
Schreibe ein Programm, welches zwei Textdateien (zb Vorname.txt, Nachname.txt) Zeile für Zeile in ein Array lädt.
Gebe dann eine zufällige Kombination aus Vornamen und Nachnamen aus.
Gebe dann eine zufällige Kombination aus Vornamen und Nachnamen aus.
0 Lösungen
Code schreiben (Serialisierung)
Ihr Kunde ist verzweifelt. Er ist im Besitz des Programmcodes einer Klasse Person sowie einer Datei friends.dat. In friends.dat sind serialisierte Bytefolgen verschiedener Person-Objekte enthalten. Ihr Kunde weiß nicht, wie er die Bytefolgen wieder "zum Leben erweckt" (aktiviert). Er möchte von Ihnen wissen, welche Personen in der Datei friends.dat stecken und wie die Freundschaftsbeziehungen zwischen den Personen aussehen. Ihr Kunde weiß, dass die Datei friends.dat ein einziges Objekt vom Typ ArrayList<Person> enthält. Hier der Quelltext der Klasse Person (im anonymen Default-Package)
Sie erhalten die Klasse Person im Quelltext sowie die Datei friends.dat als Anlage zu dieser Aufgabe. Erstellen Sie eine statische Methode decode in der Klasse Decode (im anonymen Default-Package) welche die als Dateinamen-Parameter gegebene Datei deserialisiert und dann die Freundschaftsbeziehungen in der Reihenfolge ausgibt, wie sie in der deserialisierten ArrayList stehen. Das gewünschte Ausgabeformat ist wie folgt (wobei die Datei friends.dat andere als die folgenden Personendaten enthält):
Sie erhalten die Klasse Person im Quelltext sowie die Datei friends.dat als Anlage zu dieser Aufgabe. Erstellen Sie eine statische Methode decode in der Klasse Decode (im anonymen Default-Package) welche die als Dateinamen-Parameter gegebene Datei deserialisiert und dann die Freundschaftsbeziehungen in der Reihenfolge ausgibt, wie sie in der deserialisierten ArrayList stehen. Das gewünschte Ausgabeformat ist wie folgt (wobei die Datei friends.dat andere als die folgenden Personendaten enthält):
0 Lösungen
Einfaches Verwaltungstool mit CSV Import / Export
Der Personalchef in Firma "Bli Bla Blub & Söhne" hat nicht länger Lust, alles was Mitarbeiter betrifft, auf Zetteln zu führen bzw. zu verwalten.
Er ist sowieso der Ansicht, dass zu viele Bäume Tag für Tag abgeholzt werden...
Nun kommt er mit der Bitte zu dir, ein Programm zu entwickeln, welches ihm das Leben diesbezüglich einfacher machen soll.
Deine Aufgabe: Schreibe in der Programmiersprache deiner Wahl ein grafisches Verwaltungsprogramm.
Anforderungen an das Programm:
1) Möglichkeit Mitarbeiter anzulegen, deren Daten zu editieren bzw. Mitarbeiter zu löschen.
2) Ausgabe der Informationen aller Mitarbeiter in einer Tabelle (zur Übersichtlichkeit, während der Laufzeit).
3) Die Informationen der Tabelle sollen sortiert werden können (z.B. nach Abteilung, Geschlecht, ...) ==> noch mehr Übersichtlichkeit! :)
4) Damit die Daten nachdem das Programm geschlossen wurde nicht verloren gehen soll es zusätzlich eine Import- und Export-Funktion geben, welche alle Daten in eine CSV-Datei speichert.
4.1) Export: Es soll eine CSV-Datei erstellt werden, d.h. alle Informationen eines jeden Mitarbeiters werden via Komma, Tab, o.ä. getrennt in die Datei geschrieben. Ein Zeilenumbruch gibt an, dass nun die Informationen des nächsten Mitarbeiters kommen.
4.2) Import: Die CSV-Datei soll eingelesen werden. Aus allen Informationen eines einzelnen Mitarbeiters soll wieder ein Objekt instanziiert werden. Wenn alle Mitarbeiter importiert wurden, sollen diese wieder in der Tabelle angezeigt werden.
Hinweise:
- Export: Gib der Klasse "Mitarbeiter" vielleicht eine extra Methode, die dir deinen CSV-String bastelt (natürlich nur, wenn du auch eine Klasse "Mitarbeiter" hast ;) )
Beispiel einer kleinen CSV-Datei:
Vorname; Nachname; Geschlecht; Geburtsdatum; Abteilung/Job
Viel Freude beim entwickeln und basteln :)
Er ist sowieso der Ansicht, dass zu viele Bäume Tag für Tag abgeholzt werden...
Nun kommt er mit der Bitte zu dir, ein Programm zu entwickeln, welches ihm das Leben diesbezüglich einfacher machen soll.
Deine Aufgabe: Schreibe in der Programmiersprache deiner Wahl ein grafisches Verwaltungsprogramm.
Anforderungen an das Programm:
1) Möglichkeit Mitarbeiter anzulegen, deren Daten zu editieren bzw. Mitarbeiter zu löschen.
2) Ausgabe der Informationen aller Mitarbeiter in einer Tabelle (zur Übersichtlichkeit, während der Laufzeit).
3) Die Informationen der Tabelle sollen sortiert werden können (z.B. nach Abteilung, Geschlecht, ...) ==> noch mehr Übersichtlichkeit! :)
4) Damit die Daten nachdem das Programm geschlossen wurde nicht verloren gehen soll es zusätzlich eine Import- und Export-Funktion geben, welche alle Daten in eine CSV-Datei speichert.
4.1) Export: Es soll eine CSV-Datei erstellt werden, d.h. alle Informationen eines jeden Mitarbeiters werden via Komma, Tab, o.ä. getrennt in die Datei geschrieben. Ein Zeilenumbruch gibt an, dass nun die Informationen des nächsten Mitarbeiters kommen.
4.2) Import: Die CSV-Datei soll eingelesen werden. Aus allen Informationen eines einzelnen Mitarbeiters soll wieder ein Objekt instanziiert werden. Wenn alle Mitarbeiter importiert wurden, sollen diese wieder in der Tabelle angezeigt werden.
Hinweise:
- Export: Gib der Klasse "Mitarbeiter" vielleicht eine extra Methode, die dir deinen CSV-String bastelt (natürlich nur, wenn du auch eine Klasse "Mitarbeiter" hast ;) )
Beispiel einer kleinen CSV-Datei:
Vorname; Nachname; Geschlecht; Geburtsdatum; Abteilung/Job
Heinz; Bli; männlich; 01.01.1910; Chef
Günther; Bla; männlich; 02.02.1920; Personalchef
Erika; Blub; weiblich; 03.03.1930; Leitering Abteilung Marketing
Mannfred; Bli-Blub; männlich; 04.04.1940; Entwickler
Viel Freude beim entwickeln und basteln :)
0 Lösungen
Screenshots erstellen und abspeichern
Aufgaben:
1) Erstelle ein Windows Forms Programm, welches via Buttonklick einen Screenshot erstellen kann.
2) Zusätzlich soll dieser Screenshot dann in einem beliebigen Ordner abgespeichert werden können, aber nur, falls dies der Nutzer auch möchte.
3) Das Bild kann dann dementsprechend in verschiedenen Formaten abgespeichert werden (png, jpg, …)
Optional:
- Gib dem Nutzer zusätzlich die Möglichkeit nur einen gewissen Bereich des Bildschirms als Screenshot abspeichern zu können (man möchte ja ggf. nur ein Fenster o.ä. aufnehmen)
- Möglichkeit das Bild um x Grad drehen
- Möglichkeit etwas in das Bild zeichnen, z.B. einen roten Rahmen
- Farbverläufe?
- etc. etc. etc.
Was ist ein Screenshot? Klicke hier!
1) Erstelle ein Windows Forms Programm, welches via Buttonklick einen Screenshot erstellen kann.
2) Zusätzlich soll dieser Screenshot dann in einem beliebigen Ordner abgespeichert werden können, aber nur, falls dies der Nutzer auch möchte.
3) Das Bild kann dann dementsprechend in verschiedenen Formaten abgespeichert werden (png, jpg, …)
Optional:
- Gib dem Nutzer zusätzlich die Möglichkeit nur einen gewissen Bereich des Bildschirms als Screenshot abspeichern zu können (man möchte ja ggf. nur ein Fenster o.ä. aufnehmen)
- Möglichkeit das Bild um x Grad drehen
- Möglichkeit etwas in das Bild zeichnen, z.B. einen roten Rahmen
- Farbverläufe?
- etc. etc. etc.
Was ist ein Screenshot? Klicke hier!