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