#include <print>
#include <cstdlib>
#include <string>

// Die Produkte
const std::string products[] {"TV","Smartphone","Computer"};
// Anzahl der Produkte
constexpr unsigned int NO_OF_PRODUCTS = sizeof products / sizeof(products[0]);

// Funktionsdeklarationen
unsigned long SerialNumber(const unsigned char& prod);

int main()
{
    std::println("Erzeuge nun Seriennummern:");
    // für 15 Produkte Seriennummern erzeugen
    for (auto index = 0; index < 15; index++)
    {
        // Produkttyp zufaellig festlegen
        unsigned char prod = (rand() % NO_OF_PRODUCTS);
        // Produkttyp und Seriennummer ausgeben
        std::println("Produkt {:10}, Seriennummer: {:05}",
                    products[prod], SerialNumber(prod));
    }
}

// Funktion zum Erzeugen von Seriennummern
unsigned long SerialNumber(const unsigned char& prod)
{
    // Feld mit den Seriennummer fuer die Produkte
    // Datentyp ist Returntyp der Funktion
    // Seriennummer initialsieren
    static decltype(SerialNumber(0)) serialNum[NO_OF_PRODUCTS]
                    {1, 10001, 20001};
    // Seriennummer inkr.
    return serialNum[prod]++;
}
