3146 |
Akkord |
kleinstes Intervall von Toenen |
Kategorie: | Musik |
Klasse: | mittel |
Eingabe: | siehe Spezifikation |
Ausgabe: | siehe Spezifikation |
|
Abzugebende Files: Akkord.txt, Akkord.java, *.java , 260.txt, 556.txt |
Kurzbeschreibung:
Drei Musiknoten werden eingelesen; das kleinste Intervall und die Frequenzen
des Dur\Dreiklanges auf dem ersten eingegebenen Ton werden berechnet.
Allgemeine Hinweise:
-
Sie haben Lösungen (und Spezifikationen) aus der 1. Runde von anderen Studenten erhalten,
die Ihnen Ihre Aufgabe erleichtern sollen. Wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil,
Korrektheit und Verwendbarkeit am besten erscheint. Verwenden Sie
diese Lösung in Ihrem Programm. Sie können auch die anderen Lösungen einsetzen.
- Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben. Geben Sie nur jene Lösungsnummer an, die Sie auch wirklich ausgewählt haben.
-
Erstellen Sie für alle Lösungen zu diesem Beispiel (siehe: "Abzugebende Files") ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der Lösung. Diese Reviews erhalten dann die TeilnehmerIn von dem/der die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.
-
Sie können für die Lösung der gewählten Aufgabe eine oder mehrere Klassen programmieren. Die Klasse Akkord.java muß aber die Methode main enthalten. Weiters müssen alle abgegebenen Klassenfiles in demselben Verzeichnis vorliegen, Pfadangaben sind nicht gestattet.
-
Achten Sie auf die korrekten Konventionen der Groß/Kleinschreibung bei
Klassen und Methoden!
[Wir tun das jetzt auch :-)]
-
Falls Ihre Lösung einen Exit Code zurueckliefert, so
achten Sie darauf, dass dieser den Wert 0 hat.
Bei allen anderen Werten können Probleme bei der Bewertung und in weiterer
Folge unbeabsichtigte Punkteabzüge auftreten.
- Ihre Lösung darf nur genau jene Ausgabedaten liefern, die in der
Spezifikation verlangt werden. Die Ausgaben Ihrer Lösung werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
- Testen Sie Ihre Lösung vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihrer Lösung mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihre Lösung auch mit anderen Eingabedaten.
-
Verwenden Sie nur das von uns mitgelieferten Package eprog
für Ihre Ein/Ausgaben. Klassen, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.3.1_1) verwenden, können von uns
nicht getestet werden und werden daher mit 0 Punkten bewertet!
- Schreiben Sie Ihre Klasse(n) möglichst allgemein und kommentieren
Sie diese gut. Erstellen Sie weiters eine übersichtliche und
verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen,
daß andere Studenten in der nächsten Runde Ihre Lösung
wählen und Ihnen damit zu Zusatzpunkten verhelfen!
Aufgabenstellung:
Ihr Programm soll drei Strings einlesen, die jeweils eine Musiknote
enthalten.
Das Intervall der beiden Töne, die am nächsten zueinander liegen, soll
ermittelt werden.
Der gesamte Tonbereich ist in Oktaven gegliedert. Jede Oktave besteht
aus den
zwölf Tönen C, Cis, D, Dis, E, F, Fis, G, Gis, A, Ais und H.
Die Oktaven sind folgendermßen angeordnet:
Name der Oktave |
Schreibweise der Töne |
---|
große Oktav |
C Cis D Dis E F Fis ... |
kleine Oktav |
c cis d dis e f fis ... |
eingestrichene Oktav |
c' cis' d' dis' e' f' fis' ... |
zweigestrichene Oktav |
c'' cis'' d'' dis'' e'' f'' fis'' ... |
dreigestrichene Oktav |
c''' cis''' d''' dis''' e''' f''' fis''' ... |
Dabei enthält die große Oktave die tiefen und die dreigestrichene Oktave die
hohen Töne.
Je zwei nebeneinanderliegende Töne einer Oktave (z.B. dis und e) liegen genau
einen Halbton auseinander.
Die Intervalle zwischen zwei Tönen sind wie folgt definiert:
Name |
Abstand in Halbtonschritten |
---|
Prim | 0 HTS |
kleine Sekund | 1 HTS |
grosse Sekund | 2 HTS |
kleine Terz | 3 HTS |
grosse Terz | 4 HTS |
kleine Quart | 5 HTS |
grosse Quart | 6 HTS |
Quint | 7 HTS |
kleine Sext | 8 HTS |
grosse Sext | 9 HTS |
kleine Sept | 10 HTS |
grosse Sept | 11 HTS |
Oktave | 12 HTS |
Beachten Sie, daß das "ß" hier durch "ss" ersetzt wurde.
Weiters sollen Sie den Dur\Dreiklang auf dem ersten der drei eingegebenen
Töne ermitteln. Nehmen sie diesen Ton als Grundton des Dreiklanges. Anschließend müssen Sie die beiden Töne finden, die vom Grundton eine große Terz
sowie eine Quint entfernt sind (jeweils nach oben). Berechnen Sie nun gemäß
der Erstrundenspezifikation die Frequenzen dieser drei Töne.
Eingabedaten:
Lesen Sie drei Strings ein, die jeweils eine Note enthalten. Dieser soll
eine
Note in der oben angebenen Schreibweise enthalten. Beachten Sie, daß nur der
Anfangsbuchstabe groß sein darf (dies markiert eine Note der großen
Oktav) und
daß in diesem Fall auch keine Hochkommas folgen dürfen.
Der erste Ton soll zwischen C und dis''' liegen; die beiden anderen zwischen
zwischen C und h'''.
Das kleinste Intervall zwischen diesen drei Tönen darf nicht größer als eine Oktave sein.
Ausgabedaten:
Bei korrekten Eingabedaten soll Ihr Programm den Namen des kleinsten Intervalls zwischen den drei Tönen gemäß der oben stehenden Tabelle ausgeben.
Weiters sollen die Frequenzen der drei Töne des Dreiklangs (in aufsteigender
Reihenfolge) ausgegeben werden.
Trennen Sie den Intervallnamen und die Frequenzen durch Leerzeichen und
geben
Sie am Ende einen Zeilenvorschub aus.
Fehlerbehandlung:
Sind die eingegebenen Daten nicht korrekt, so soll Ihr Programm die Meldung
"FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.
Lesen Sie aber auf jeden Fall alle drei Strings ein, auch wenn schon vorher
ein Fehler auftritt.
Beispiele:
Eingabedaten
|
C f'' A
h h c'
|
Ausgabedaten
|
grosse Sext 65 82 98
Prim 246 312 368
|
Testen:
Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und
müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie
bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung
können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei
erzeugen:
java Akkord < Akkord.i1 > Akkord.out1
Das erzeugte File Akkord.out1 können Sie dann mit dem mitgelieferten Outputfile Akkord.o1 vergleichen.