Auch in diesem Übungsblatt geht es wieder um Algorithmen und deren Implementierung in Java. In Aufgabe 17a) bekommen Sie einen Algorithmus vorgegeben (der sogar wirklich eine reale Anwendung hat, allerdings nicht in Zusammenhang mit Reisepässen!), in Aufgabe 17b) ist dieser Algorithmus dann selbständig zu invertieren. Aufgabe 18 gibt Gelegenheit, sich zu einem gegebenen Problem den passenden Algorithmus selbst auszudenken.
Nun hat sich wie gesagt niemand für Ihre Idee interessiert (vielleicht, weil auch schon 1.000 Leute vor Ihnen auf diese Idee gekommen waren). Als harte(r) Naturwissenschaftler(in) geben Sie allerdings nicht auf und programmieren Ihren Algorithmus und dessen Rückrichtung nun in Java - in der Hoffnung, daß dies wenigstens Ihren Tutor begeistert und er Ihnen hierfür ein paar Punkte einträgt.
Daraus ergibt sich dann auch gleich die (zweiteilige) Aufgabe 17:
Die Berechnung der Prüfzahl aus den vorliegenden Namen (Vorname / Nachname) geschieht nach dem folgenden Algorithmus:
Das Ergebnis dieser Berechnung ist die Prüfsumme!
Schreiben Sie ein Java-Programm, das sowohl den Nachnamen als auch den Vornamen einliest und gemäß vorstehendem Algorithmus die Prüfsumme berechnet (und ausgibt)!
theseus$ java CalcCheckVal Bitte den Nachnamen eingeben: Wurst Bitte den Vornamen eingeben: Hans Der berechnete CheckVal ist: 22480.
Teil a) war ja nur zum Aufwärmen und sollte kein Problem dargestellt haben. Nun aber soll die Berechnung invertiert, d.h. aus einer gegebenen Prüfsumme sollen die Initialen berechnet werden.
Schreiben Sie ein weiteres Java-Programm, das eine Prüfsumme einliest, daraus die Initialen berechnet und diese ausgibt!
theseus$ java CalcInitials Bitte geben Sie den Check-Value ein: 22480 Initial des Vornamens: H --- Initial des Nachnamens: W
Okay, der ein oder andere Taschenrechner kann das auch, aber viel spannender ist es, ein solches Konvertierungs-Programm einmal selber zu schreiben. Das motiviert doch die folgende Aufgabe:
``Schreiben Sie ein Programm, das von der Standardeingabe eine Dezimalzahl und eine Basis (zwischen 2 und 16) einliest, die Dezimalzahl in das Zahlenformat zur eingegebenen Basis umrechnet und das Ergebnis auf der Standardausgabe ausgibt!''
theseus$ java Converter Welche Basis sollen wir verwenden? 2 Geben Sie nun die zu konvertierende Dezimal-Zahl ein: 120 Ergebnis der Umrechnung: 1111000 theseus$ java Converter Welche Basis sollen wir verwenden? 16 Geben Sie nun die zu konvertierende Dezimal-Zahl ein: 511 Ergebnis der Umrechnung: 1FF theseus$ java Converter Welche Basis sollen wir verwenden? 99 Die eingegebene Basis ist ungueltig!
Viel Erfolg!