// Autor: Roland Kammerer // MatNr: 0125555 // BspNr: 1130 // Beschreibung: Geldberechnung meine gedanken zu diesem programm: // variablendeklaration als erstes werden alle nötigen varialblen deklariert und initialisiert. die boolean variable 'kill' wird von anfang an auf true gesetzt, und im laufe des programms falsifiziet. die 'kill' variable entscheidet, ob als ausgabe 'FALSCHE EINGABE' oder der berechnete betrag erscheinen wird. auf die bedeutung der anderen variablen wird eingegangen, wenn sie zum ersten mal vorkommen. // einlesen der eingabe an dieser stelle wird der string-variable 'eingabe' ein wert, der vom benutzer eingegeben wurde, zugewiesen. // fehlerabfragen die ersten beiden if-anweisungen untersuchen, ob die string-variable mit einem der verlangten buchstaben 'A' oder 'B' enden. falls das so ist, wird die kill-bedingung auf false gesetzt, und die variable 'zsyst' (zielsystem) erhält den entsprechenden wert. // überprüfung und extrahieren der integerzahl als erstes wird die länge des eingelesenen strings berechnet. die folgende for schleife untersucht nun, ob jedes der zeichen des strings eine ziffer ist. dies geschieht bis 'laenge-1', da das letzte zeichen ein 'A' oder 'B' sein muss. die variable 'reststr' (reststring) wird mit den verbleibenden ziffern aufgefüllt. reststr wird anschließend in eine integer variable namens 'rest' umgewandelt. // umwandlung des reststings in eine int zahl der variablen 'rest1' wird erst einmal der zahlenwert von 'reststr' zugewiesen. danach wird untersucht, ob es sich ausgeht, dass die variable in eine integerzahl konvertiert werden kann. man könnte sich an dieser stelle fragen, warum man dann nicht gleich mit dieser 'long-variable' weiterrechnet? meines erachtens ist das leider nötig, da ich sonst probleme mit dem compiler bekomme, da sich dieser aufregt, dass ein int wert nicht mit einem long wert verrechnet werden darf, da ein genauigkeitsverlust befürchtet wird. eine andere möglichkeit wäre es alle zahlen den typ long, und nicht int zuzuweisen, da diese aber mehr speicher belegen würden, denke ich es ist so wirtschaftlicher :-) //SCHEIN-BERECHNUNG SYSTEM A = B die eigentliche berechnung der ausgabe erfolgt in dieser while-schleife. als erstes wird untersucht, ob der 'rest' noch größer als 5 ist (ab hier, müsste nämlich mit der münzberechnung begonnen werden) und das 'zsyst' 'A' bzw 'B' ist. als erstes wird untersucht, in welchem bereich sich die 'rest' variable befindet. laut dieser wird dann die variable 'grbetrag' (größter betrag) gesetzt. (zb.: wenn der 'rest' 560 wäre, würde der 'grbetrag' auf 500 gesetzt). die 'ausgabezahl' wird dann aus 'rest' durch 'grbetrag' berechnet. (560/500=1). danach wird 'rest' um 'grbetrag'*'ausgabezahl' verringert('rest'=560-500*1). danach beginnt das spiel von neuem. //MUENZ-BERECHNUNG SYSTEM A = B verhält sich wie die scheinberechnung. erwähneswert ist nur, dass beim system 'B' die münze mit dem wert 10 nie eingesetzt wird, da statt ihr immer 2 scheine mit dem wert 5 zum einstatz kommen. (münzen dürfen erst dann eingesetzt werden, wenn man mit scheinen nicht mehr auskommt (laut spec)). ps.: mein programm ist an vielen stellen verbesserungswürdig, aber verzeiht bitte einem unwissenden, der bis jetzt nur in pascal und delphi programmiert hat :-)