1.3 Kontrollfluss#

Zugriff auf Hilfe zur Standard-Library#

Es kann dazu im Notebook direkt auf die Hilfsseiten der STL zugegriffen werden über `?Begrif``, zum Beispiel

?std::vector

Dies öffnet die Informationen direkt aus dem Netz (und kann daher ein paar Sekunden benötigen).

?std::vector

Arrays#

Definition: int data1[42];

Statt der expliziten Größenangabe kann ein Array implizit mit einer Initialisierungsliste definiert werden: int data2[] = {1, 2, 3, 44, 55, 110};

Zugriff auf Elemente: int a = data2[0]; // a == 1 data2 [1] = a;

*Achtung: Keine Exception bei unerlaubtem Zugriff wie z.B. data2[6] = 24;

Es gibt keine Funktion array_name.length()! Die Länge eines Arrays muss separat gespeichert/an Funktionen übergeben werden (Die Anzahl der Elemente eines Arrays a kann zwar mit sizeof(a)/sizeof(a[0]) ermittelt werden, nicht jedoch, wenn ein Array-Typ als Parameter an eine Funktion übergeben wird, da hierbei implizit in den zugrunde liegenden Pointer-Typ umgewandelt wird.)

Aufgabe: For-Schleife#

Schreiben sie ein Programm, dass das Maximum der Elemente eines vorgegebenen Arrays bestimmt. Als Test können sie zum Beispiel den Array int numbers[] = {5,7,13,2,6,5,19}; nutzen.

Hinweis: Die Anzahl der Elemente eines Arrays können Sie mit sizeof(numbers) berechnen, das einen int zurückgibt (Anmerkung: sizeof liefert die Größe im Speicher, nicht die Anzahl an Einträgen).

Hilfe zu Kontrollstrukturen.

#include <iostream>

int main(int argc, const char* argv[])
{
    int numbers[] = {5,7,13,2,6,5,9};
    int max = 0;
    // Provide code for finding the max in the array.

    std::cout << max << std::endl;
}

In den folgenden Zellen sind zwei mögliche Lösungen angegeben, die dies kurz in Code umsetzen. Später werden sie noch weitere Vereinfachungen zum Zugriff kennen lernen.

#include <iostream>

int main(int argc, const char* argv[])
{
    int numbers[] = {5,7,13,2,6,5,9};
    int size = sizeof(numbers) / sizeof(int);

    int max = numbers[0];
    for (int i = 0; i < size; ++i)
    {
        if (numbers[i] > max)
            max = numbers[i];
    }
    
    std::cout << max << std::endl;
}
#include <iostream>

int main(int argc, const char* argv[])
{
    int numbers[] = {5,7,13,2,6,5,9};
    
    int max = numbers[0];
    for (int num : numbers)
        max = num > max ? num : max;

   
    std::cout << max << std::endl;
}

Diese Aufgabe ist aus dem WWU C++ Kurs übernommen.