Zum Inhalt springen

Musterlösung Kaffeautomat


Empfohlene Beiträge

Es gibt weiter unten 3 zeilen die ergänzt werden müssen. danke für die hilfe


/*

 *      Jedes Programm sollte mit einigen Zeilen Kommentar beginnen, die

 *      eine kurze Beschreibung liefern.

 *      Ferner ist es heutzutage immer wichtiger Aendergungen am Programmcode

 *      zu dokumentieren, denn wenn zum Beispiel Projekte in einem Team entwickelt

 *      werden, dann wuesste der naechste Programmierer nicht, welche Aenderungen

 *      zuletzt an dem Programm durchgefuehrt worden sind.

 *

 * ---------------------------------------------------------------------------

 *

 *      Datei/File:		Kaffee.C

 *      Beschr./Desc.:	Simulation eines Kaffeeautomaten als endlichen Automaten

 *      Firma/Company:

 *         		

 *      Zweck:			

 *      Autor/Author:	<Fuegen Sie hier Ihren Namen ein>

 *      Co-Author:		<Hier koennten sich andere Teammitglieder eintragen>

 *      				<die Aenderungen am Programm durchgefuehrt haben>

 *      				<Ferner koennte auch die Aufgabe optional noch ergaenzt werden>

 *

 *      Erstellt/Create: 	01-10-2009

 *      Geaendert/Change: 	30-10-2009

 *      					- Name des Autors der Veraenderung

 *      					: Hier folgt eine kurze Beschreibung der

 *      					  Veraenderung

 *

 * ---------------------------------------------------------------------------

 */



/* Am Anfang eines jeden C++-Programms bindet man die Schnittstellen der

 * verwendeten Bibliotheken mittels include-Anweisungen ein. Wir wollen die

 * Objekte "cout" und "cin" und deren Operatoren "<<" bzw. ">>" benutzen, und

 * benaetigen daher die Bibliothek "iostream"

 */


// include Anweisungen

#include <iostream>


using namespace std;


/*

 * Das Hauptprogramm ist der Programmteil, der bei der Ausfuehrung des

 * Programms aufgerufen wird.

 */


// Hauptprogramm

int main() {

	/*

	 * Am Anfang eines Programmblocks stehen oft einige Variablendeklarationen,

	 * durch die einem Variablennamen ein Variablentyp und eventuell ein

	 * Anfangswert zugeordnet wird.

	 */

	char Eingabezeichen;

	enum Automatzustand {

		erwarte_150, erwarte_100, erwarte_50

	};

	Automatzustand Zustand = erwarte_150;


	/*

	 * Jedes Programm sollte dem Benutzer melden, was es tut und welche

	 * Eingaben es erwartet.

	 */

	cout << "Fuer einen Kaffee werfen Sie bitte Euro 1,50 ein." << endl << endl;

	cout << "Der Automat erkennt folgende Eingaben:" << endl;

	cout << "/ = Euro 0,50" << endl;

	cout << "1 = Euro 1,00" << endl;

	cout << "* = Storno" << endl << endl;


	cout << "Der Automat erzeugt folgende Ausgaben:" << endl;

	cout << "/      = Rueckgabe Euro 0,50" << endl;

	cout << "1      = Rueckgabe Euro 1,00" << endl;

	cout << "KAFFEE = Kaffee ausgegeben" << endl;

	cout << "KLING! = Signal fuer korrekte Eingabe" << endl << endl;


	/*

	 * Dieses Programm laeuft in einer Endlosschleife, das heisst, die

	 * Anweisungen innerhalb des while-blocks werden immer wieder ausgefuehrt,

	 * bis das Programm von aussen abgebrochen wird.

	 */


	while (true) {

		// Ausgabe des Zustands

		cout << "Der Zustand ist ";


		/*

		 * Die switch-Anweisung dient zur Unterscheidung verschiedener Faelle.

		 * Jedes case-statement steht fuer einen moeglichen Wert der switch-

		 * Variablen, gefolgt von dem in diesem Fall auszufuehrenden Programmkode,

		 * der mit break abgeschlossen werden muss.

		 */


		switch (Zustand) {

		case erwarte_150:

			cout << "erwarte_150";

			break;

		case erwarte_100:

			cout << "erwarte_100";

			break;

		case erwarte_50:

			cout << "erwarte_50";

			break;

		}


		// Eingabe eines Zeichens

		cout << ", Ihre Eingabe: " << flush;

		cin >> Eingabezeichen;


		// Aenderung des Zustands je nach Wert des Eingabezeichens

		switch (Zustand) {

		case erwarte_150:

			switch (Eingabezeichen) {

			case '/':

				Zustand = erwarte_100;

				cout << "KLING!" << endl;

				break;

			case '1':

				Zustand = erwarte_50;

				cout << "KLING!" << endl;

				break;

			case '*':

				Zustand = erwarte_150;

				cout << "KLING!" << endl;

				break;

			default:

				cout << "Fehlerhafte Eingabe!" << endl;

				/* Es kann hiflreich sein bei vielen verschachtelten Ausdruecken die

				 * Zugehoerigkeit der Klammer zu dokumentieren

				 */

			}// Ende: switch Eingabezeichen - erwarte_150

			break;

		case erwarte_100:

			switch (Eingabezeichen) {

			/*

			 * ersetzen Sie die drei Punkte durch die richtigen Befehle

			 */

			case '/':

				...

			case '1':

				...

			case '*':

				...

			default:

				...

			}// Ende: switch Eingabezeichen - erwarte_100

			break;

		case erwarte_50:

			switch (Eingabezeichen) {

			case '/':

				Zustand = erwarte_150;

				cout << "KAFFEE" << endl;

				break;

			case '1':

				Zustand = erwarte_50;

				cout << "1" << endl;

				break;

			case '*':

				Zustand = erwarte_150;

				cout << "1" << endl;

				break;

			default:

				cout << "Fehlerhafte Eingabe!" << endl;

			}// Ende: switch Eingabezeichen - erwarte_50

			break;

		}// Wuessten sie noch zu welcher Anweisung die Klammer gehoert?

	}//while


	/*

	 * Jedes Programm gibt an die shell, von der aus es aufgerufen wurde, einen

	 * Wert vom Typ integer zurueck. Dieser Mechanismus wird normalerweise dazu

	 * verwendet, Fehlerkodes zurueckzugeben. Der Rueckgabewert 0 bedeutet

	 * in der Regel, dass das Programm fehlerfrei beendet wurde.

	 */


	return 0;

}//main

Bearbeitet von Klotzkopp
Code-Tags hinzugefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...