// Autor: WAGNER PATRICK // Matrikelnummer: 0125872 // 3. Runde // Bsp.: Akkord.java import eprog.*; public class Akkord extends EprogIO { private final static int notenanz = 60; //Anzahl der Noten ist 60 (12*5) //Auflistung der gesamten Noten in einem Array [] private final static String [] Noten = {"C","Cis","D","Dis","E","F","Fis","G","Gis","A","Ais","H","c","cis","d","dis","e","f","fis","g","gis","a","ais","h","c'","cis'","d'","dis'","e'","f'","fis'","g'","gis'","a'","ais'","h'","c''","cis''","d''","dis''","e''","f''","fis''","g''","gis''","a''","ais''","h''","c'''","cis'''","d'''","dis'''","e'''","f'''","fis'''","g'''","gis'''","a'''","ais'''","h'''"}; public static void main (String[] args) { String note1 = readWord(); //Lese jede Note ein String note2 = readWord(); String note3 = readWord(); int note1index = sucheNote(note1); //rufe 1. Note vom Index auf if (note1index == -1) //wenn die Note ausserhalb des Indexes liegt { //gib "Falsche Ausgabe" aus println ("FALSCHE EINGABE"); return; } if (note1index > sucheNote ("dis'''")) //1. Note darf nicht über dis''' liegen { println ("FALSCHE EINGABE"); return; } int note2index = sucheNote(note2); //rufe 2. Note vom Index auf if (note2index == -1) { println ("FALSCHE EINGABE"); return; } int note3index = sucheNote(note3); //rufe 3. Note vom Index auf if (note3index == -1) { println ("FALSCHE EINGABE"); } //suche den kleinsten Abstand (Minimum) zwischen den 3 Noten int min = Math.min( Math.min( Math.abs(note1index-note2index),Math.abs(note2index-note3index) ), Math.abs(note1index-note3index) ); String abstand; switch (min) //ordne zu den jeweiligen Abstand den richtigen { //Halbtonschrittabstand zu case 0: abstand = "Prim"; break; case 1: abstand = "kleine Sekund"; break; case 2: abstand = "grosse Sekund"; break; case 3: abstand = "kleine Terz"; break; case 4: abstand = "grosse Terz"; break; case 5: abstand = "kleine Quart"; break; case 6: abstand = "grosse Quart"; break; case 7: abstand = "Quint"; break; case 8: abstand = "kleine Sext"; break; case 9: abstand = "grosse Sext"; break; case 10: abstand = "kleine Sept"; break; case 11: abstand = "grosse Sept"; break; case 12: abstand = "Oktave"; break; default: println ("FALSCHE EINGABE"); return; } //gebe den Abstand und die Noten des Dur/Dreiklanges mit der jeweilligen Frequenz aus print (abstand); print (" "); print (notenfrq(Noten[note1index])); print (" "); print (notenfrq(Noten[note1index+4])); print (" "); print (notenfrq(Noten[note1index+7])); println (); } public static int sucheNote(String note) { int i; for (i=0; i