Übungen / Aufgaben zu Java

0 Lösungen
Das Problemspiel der spagetti-essenden Philosophen
Anfänger - Java von hollst - 04.12.2019 um 18:44 Uhr
wiki
https://de.wikipedia.org/wiki/Philosophenproblem


Fünf Philosophen sitzen um einen runden Tisch, vor jedem ein Teller voll mit Spagetti und links davon eine Gabel (BILD 1).
Um von dem Teller Spagetti essen zu können, benötigt man allerdings zwei Gabeln. Die zweite Gabel kann man sich von seinem
rechten Nachbarn borgen, sofern dieser nicht gerade selber beim Essen ist. Außerdem sollte man seine eigene Gabel auch nicht gerade
an seinen linken Nachbarn verborgt haben.

Das Spiel beginnt beim ersten Philosophen und geht Schritt für Schritt wie folgt reihum:

Jeder Philosoph kann sich in einem von drei möglichen Zuständen befinden,
u. z. denkend (Zustand 1, zu Beginn alle fünf Philosophen), hungernd (2) oder essend (3).

Ein denkender Philosoph kann per Zufallsentscheidung entweder in diesem Zustand 1 verweilen (dann geht der Zeiger sofort weiter an
seinen rechten Nachbarn) oder sich für "Essenwollen" entscheiden (Übergang von Zustand 1 in Zustand 2). In diesem Fall muss er prüfen,
ob ihm zwei Gabeln zur Verfügung stehen. Wenn Ja geht er von Zusand 2 in den Zustand 3 über und kann (sagen wir) zwei [Variable E wie Essen] Runden lang essen. Nach den zwei [E] Runden wird er zunächst wieder zum denkenden Philosophen (Zustand 1), der geleerte Teller wird sofort wieder aufgefüllt, falls der Philosoph erneut Hunger bekommt.

Hat er allerdings keine zwei Gabeln zur Verfügung, bleibt er die Runde hungrig (er verharrt im Zustand 2). Bekommt ein Philosoph
(sagen wir) zehn [Variable T wie Tod] Runden lang hintereinander nichts zu essen, ist er verhungert und das Gelage auch zu ende.

Die Frage lautet, nach wie vielen Runden (abhängig von E und T) ist im Durchschitt der erste Philosoph verhungert. Viel Spaß!
0 Lösungen
Text in Blindenschrift (Braille-Schrift) darstellen
Anfänger - Java von hollst - 12.11.2019 um 20:14 Uhr
Hallo,

Eure Aufgabe sei es, einen gegebenen Text in ein Blindenschriftmuster zu überführen.

Das Alphabet bestehe aus den in DE verwendeten 26 + 3 Buchstaben (alles Kleinbuchstaben im Braille),
dem Leerzeichen, den Dezimalzahlen 0 ... 9 und vier Sonderzeichen (!, ?, ., ,) (Abb. 1).

Zwei Zeichen werden jeweils durch ein ordinäres Leerzeichen getrennt,
zwischen zwei Zielen ist eine Leerzeichenzeilen eingefügt.

Exemplarisch sei der Satz "TrainYourProgrammer gehört zu meinen Lieblings-Webseiten." als
Blindschriftmuster dargestellt (Abb. 2). "-" und "+" gehören nicht zu unserem Alphabet
und sind durch Leerzeichen zu ersetzen.

Viel Spaß!
0 Lösungen
Muster im Polarkoordinatensystem
Anfänger - Java von Exception - 10.11.2019 um 09:24 Uhr
Hallo zusammen,

heute sollt ihr ein kleines Zeichenprogramm schreiben.

1. Polarkoordinatensystem

Zuerst geht es darum ein Polarkoordinatensystem (auch als Kreiskoordinatensystem bekannt) zu zeichnen.
Der Ursprung des Koordinatensystems befindet sich im Zentrum der Zeichenfläche.

- Die X-Achse verläuft horizontal durch den Ursprung, die Y-Achse vertikal.
- Jede Längeneinheit soll von einem Kreis geschnitten werden, also jeweils bei X(n) und Y(n). Der Kreismittelpunkt befindet sich dementsprechend im Ursprung des Koordinatensystems.
- Des Weiteren soll alle 22,5° eine Linie vom Ursprung aus gezogen werden (dies sind insg. 16 Linien, damit sind auch die X- als auch die Y-Achse abgedeckt!).

Wenn ihr das geschafft habt, sollte das ca. so aussehen Beispiel Polarkoordinatensystem (Hier allerdings mit 30°-Schritten anstatt mit 22,5°)
Auf die Gradangaben kann verzichtet werden.
Zudem solltet ihr dezente Farben für das Koordinatensystem wählen.

2. Muster

Für das Muster sollt ihr nun Punkte in diesem Koordinatensystem einzeichnen.
Diese ergeben das Muster je nach Punktanzahl und Zoom.

Ein jeder dieser Punkte hat folgende Eigenschaften:
- Die X-Koordinate ist die Entfernung vom Koordinatenursprung (= der Radius)
- Die Y-Koordinate ist das Bogenmaß.

Jeder Punkt soll die gleiche Zahl für X und Y eingesetzt bekommen.
D.h. Punkt p: pX(n) und pY(n)
Hier ergibt sich jedoch eine Schwierigkeit für Y.
Der Wert der Y-Koordinate n ist das Bogenmaß und muss dementsprechend noch in eine Gradzahl konvertiert werden.
Ein Beispiel:
X = 3
Y = 3 (bzw. ~172°)

Ihr sollt das nun Punkte für 0 < n <= 100 auf diesem Koordinatensystem einzeichnen.

Im Anhang befinden sich noch drei Abbildungen, die das ganze Vorhaben verdeutlichen sollen.
Es heißt ja immer ein Bild sagt mehr als tausend Worte...

Viel Spaß
euer Exception :)
0 Lösungen
Zeitenrechner - Windows Forms
Anfänger - Java von paddlboot - 05.11.2019 um 07:59 Uhr
Erstelle eine Windows Forms Anwendung, in der die Arbeitszeit nach Eingabe von Beginn, Pause und Feierabend ausgerechnet werden soll.

Hierbei soll der Benutzer den Arbeitsbeginn, Beginn und Ende der Pause und den Feierabend in Textboxen eingegeben.
Mit Hilfe von Buttons soll der Benutzer entscheiden können, ob er nur den Vormittag, den Nachmittag oder die gesamte Arbeitszeit angezeigt haben möchte.

Achtung!: Die Pause gehört nicht zur Arbeitszeit! Daher muss sie von der Arbeitszeit abgezogen werden!

Viel Spaß :)
0 Lösungen
Entwicklung einer Population bishin zur vollständigen Verwandtschaft
Anfänger - Java von hollst - 04.11.2019 um 12:38 Uhr
Gegeben sei eine Startpopulation mit 2N Mitgliedern (z. B. N = 100), N männliche und N weibliche, die N Elternpaare bilden.

Jedes Elternpaar erzeuge genau einen männlichen und einen weiblichen Nachkommen. Diese 2N Nachkommen bilden
anschließend durch Vermischung die nächste Generation von Eltern und so fort bis zur Generation g, die natürlich wieder 2N Populationsmitglieder hat.

Bei einer Vermischung sei Inzest (Bruder-Schwester-Ehe) verboten, eine Ehe zwischen Cousin und Cousine allerdings erlaubt.

Mittels Computersimulation sind zwei Fragen zu beantworten:

Die erste Frage lautet, nach wie vielen Generationen (g1) ist (im Mittel) erstmals ein Nachkomme mit allen Populationsmitgliedern
seiner Generation verwandt.

Die zweite Frage lautet, nach wie vielen Generationen (g2) ist (im Mittel) jeder Nachkomme mit allen Populationsmitgliedern
seiner Generation verwandt.

Viel Spaß!
0 Lösungen
Das Zahnstochermuster und die Sequenz der Anzahl freier Spitzen im Muster
Fortgeschrittener - Java von hollst - 01.10.2019 um 18:15 Uhr
Man kann sogar mit Zahnstochern Mathematik bzw. Informatik betreiben!

Ein Zahnstochermuster wird schrittweise erzeugt: Im ersten Schritt legt man einen Zahnstocher
beliebig und flach auf eine 2D-Fläche ab. Ohne besondere Einschränkungen seien angenommen, dass jeder Zahnstocher
genau die Länge 1 (eins) hat und das erste Exemplar senkrecht und mittig in einem (X, Y)-Koordinatensystem
liegt. Das Muster hat nach dem ersten Schritt zwei freie Spitzen bei (1/2, 0) und (-1/2, 0).
Im zweite Schritt werden senkrecht zum ersten Zahnstocher auf die zwei freien Spitzen jeweils ein weiterer Zahnstocher gelegt,
danach haben wir vier freie Spitzen (siehe Bild step_2). Auf diese Weise wird schrittweise fortgefahren.
Die Sequenz der Anzahl freier Spitzen im Muster beginnt so:

Schritt........: 1..2..3..4..5....6..7..8..9..10 11 12 13 14 15 16 17 18 19 ...
freie Spitzen: 2..4..4..4..8..12, 8, 4, 8, 12, 12, 16, 28, 32, 16, 4, 8, 12, 12 ...

Sie steigt zunächst an bis 12 (Schritt 6), um danach auf 4 abzufallen (Schritt 8). Dieses Auf und Ab
zieht sich stetig fort (bis in alle Ewigkeit, was noch zu beweisen wäre [jedoch nicht von uns]).
Die Entwicklung des Zahnstochermusters hat fraktalen Charakter. Anhand von Bild step_10_14_17 soll dies belegt sein.

Die Programmieraufgabe bestehe darin, die Musterentwicklung bis zum Schritt 100 "interaktiv" darzustellen (Bild step_100)
und auch die Anzahl freier Zahnstocherspitzen jeweils anzugeben.

Viel Spaß!
0 Lösungen
Windows Verzeichnis, Dateien Verschieben mit Hexadezimal
Fortgeschrittener - Java von BigShady - 22.08.2019 um 14:01 Uhr
Bei dieser Aufgabe geht es darum 3 Dateien ( pdf, txt, html) die gleich heißen von einem Verzeichnis ins andere zu verschieben.

Verzeichnisstruktur sieht so aus:

Man hat 2 Ordner die jeweils 16 Unterordner von 0 bis F ( 0-9 und A -F Hexa) haben.
Im jeden dieser 16 Ordner gibt es drei Dateien ( oben erwähnt).

In dem ersten Ordner, also Ordner 0, sieht es so aus:
3422B60.pdf
3422B60.txt
3422B60.html

Im Ordner 1:
3422B61.pdf
3422B61.txt
3422B61.html

Im Ordner 2:
3422B62.pdf
3422B62.txt
3422B62.html
usw..


Hierbei ist zu beachten das die Endung der Datei zum Ordner passen MUSS.
Beispiel:

Im Ordner "B" darf keine Datei sich befinden die NICHT auf B Endet.

Aufgabe:

Schreibe ein Programm, Konsole oder WPF, wo man eingeben kann zbs:

Ich möchte die Dateien 3422B60 bis Datei 3422BC8 in das andere Verzeichnis Verschieben.
Das Programm sollte die Dateien aus dem Jeweiligen Ordner ziehen und in das richtige Verzeichnis Verschieben.
Beachten Sie bitte auch die Korrekte reinfolge in Hexadezimal.


Viel Glück !


Kurze Info:

Hab diese Aufgabe in einer Entwickler Zeitschrift aus den USA gelesen, kann mich leider nicht mehr an den Namen erinnern.







4 Lösungen Lösungen öffentlich
Summe alle Teiler einer positven Ganzzahl
Anfänger - Java von hollst - 18.06.2019 um 20:49 Uhr
Man schreibe eine Funktion SIGMA(n) mit n > 0 und ganzzahlig, wobei der Funktionswert sich
aus der Summe aller ganzzahligen, positven Teiler von n ergibt.

Beispiele (Zahl; Teiler; Funktionswert);
1; 1; 1
2; 1, 2; 3
4; 1, 2, 4; 7
5; 1, 5; 6
...
12; 1, 2, 3, 4, 6, 12; 28
...
100; 1, 2, 4, 5, 10, 20, 25, 50, 100; 217

Für 0 < n <= 200 sollte sich der beigefügte Pinplot ergeben.

Viel Spaß!
2 Lösungen Lösungen noch nicht öffentlich
Zelle aus Exceldatei auslesen
Anfänger - Java von Gustl - 12.06.2019 um 10:29 Uhr
Es solle eine Excel Datei eingelesen (XLSX) und dann ein bestimmter Inhalt einer Zelle wieder ausgegeben werden.

3 Lösungen Lösungen öffentlich
Array von Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln
Anfänger - Java von Gustl - 08.05.2019 um 20:08 Uhr
Schreibe ein Programm welches aus einem Array von Dezimalzahlen diese Zahlen in die nächstgelegene durch 5 teilbare Zahl umwandeln.

Etwa so:

Konsolenausgabe:

 7.1 => 5
8.4 => 10
-2.4 => 0
-2.6 => -5
-8.3 => -10
2 Lösungen Lösungen noch nicht öffentlich
Begleichung einer Rechnung ausschließlich mit Münzen
Anfänger - Java von hollst - 02.05.2019 um 15:46 Uhr
Angenommen, ihr hättet an der Kasse einen Betrag X zwischen (einschließlich) einem Cent und einem Euro zu bezahlen.

Schreibe ein Program, dass die Anzahl der Möglichkeiten berechnet, X ausschließlich mit 1, 2, 5 und 10 Cent-Münzen zu begleichen.

Beispiel: X = 5 Cent -> 4 Möglichkeiten (5; 2 + 2 + 1; 2 + 1 + 1+ 1; 1 + 1 + 1 + 1 + 1)

Achtung: für einen EURO (100 Cent) gibt es bereits 2.156 Möglichkeiten!

Viel Spaß!
2 Lösungen Lösungen noch nicht öffentlich
Stochastische Ermittlung der Eulerschen-Zahl
Anfänger - Java von hollst - 12.04.2019 um 09:37 Uhr
Wir betrachten folgendes Zufallsexperiment: Aus einer Menge reeller und gleichverteilter Zahlen {X} mit 0 <= x < 1.0
ziehen wir solange Zahlen x1, x2 ... xn bis deren Summe >= 1.0 ist. n ist dann das Ergebnis eines Zufallsexperimentes.
Wir müssen mindestens zweimal ziehen, den ein einzelnes Zufalls-x ist ja immer kleiner als 1.0.

Die Frage lautet: Wie groß ist n im Mittel?

Hinweis: Laut Theorie ist n = 2.718281828459045... (= e). Nun gut, grau ist alle Theorie, wir wollen sehen, ob der Computer
(in etwa) der gleichen Meinung ist.

Viel Spaß!