C/C++ Programmierung
Aufgabe 40
Erstellen Sie eine Kopie von Aufgabe 36 und modifizieren Sie es wie folgt:
Deklarieren Sie eine Variable lager, die ein Feld von maximal 50 Artikeln darstellt. Das Programm fordert den Benutzer dann auf, ein Kommando einzugeben. Die Kommandos bestehen aus einem Buchstaben.
     E   für Eingabe eines neuen Artikels
     L   für die Ausgabe einer Liste aller Artikel
     X   beendet das Programm
Lösung für die Aufgabe
#include <fstream.h>
// Konstante für die maximale Anzahl von Artikeln
const int MAX_ARTIKEL = 50;
// Artikel-Struktur definieren
struct artikel
{
  char  name[100];
  int   anzahl;
  float preis;
};
// Funktion zum Einlesen der Artikel
void cinartikel(struct artikel *artikel)
{
  cout << "Artikeleingabe" << endl;
  cout << "Name:      ";
  cin >> artikel->name;
  cout << "Wie viele: ";
  cin >> artikel->anzahl;
  cout << "Wie teuer: ";
  cin >> artikel->preis;
}
// Funktion zum Anzeigen der Artikel
void coutartikel(struct artikel *artikel)
{
  cout << artikel->anzahl << " " << artikel->name << " zu je " << artikel->preis << " DM, Gesamtwert: " << artikel->anzahl * artikel->preis << " DM" << endl;
}
// Header anzeigen und Zeichen einlesen
char befehlseingabe()
{
  char zeichen;
  cout << endl << "Befehle:" << endl;
  cout << " E = Eingabe eines neuen Artikels" << endl;
  cout << " L = Ausgabe einer Liste aller Artikel" << endl;
  cout << " X = Programm beenden" << endl << endl;
  cout << "Bitte Befehl eingeben: " << endl;
  cin >> zeichen;
  return zeichen;
}
// Start des Hauptprogrammes
main()
{
  // Variablen deklarieren
  struct artikel lager[MAX_ARTIKEL]; // Alle Artikel im Lager
  char zeichen;                      // Wird für die Befehle benötigt
  int  max = 0;                      // Anzahl der verschiedenen Artikel
  // Hauptroutine
  zeichen = befehlseingabe();
  while (zeichen != 'X' && zeichen != 'x')
  {
    switch (zeichen)
    {
    case 'E': // Eingabe eines neuen Artikels
    case 'e':
      if (max < MAX_ARTIKEL)
      {
        cinartikel(&lager[max]);
        max++;
      }
      else
        cout << "Es können keine weiteren Artikel hinzugefügt werden." << endl;
      break;
    case 'L': // Ausgabe einer Liste mit allen Artikeln
    case 'l':
      if (max == 0)
        cout << "Es sind keine Artikel verfügbar." << endl;
      else
      {
        for (int i = 0; i < max; i++)
          coutartikel(&lager[i]);
      }
      break;
    }
    // Neuen Befehl einlesen
    zeichen = befehlseingabe();
  }
}
Zurück zur Übersicht