Statische und Dynamische Arrays,

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Statische und Dynamische Arrays,

    Hi leute,

    ich bin ein neuling im umgang mit c++
    jetzt habe ich eine aufgabe wo ich nicht weiß wie ich den ansatz überhaupt machen soll.

    das ist die aufgabe

    Schreiben Sie ein C++-Programm, welches die Einträge eines Integer-
    Arrays aufsteigend sortiert. Die Sortierung soll in-place geschehen, d.h.



    die resultierenden sortierten Werte sollen im gleichen Array stehen wie




    die Ausgangswerte.




    In dieser ersten Ausgabe sei das zu sortierende Array vorgegeben.




    unsigned int a[] = { 9, 3, 5, 2, 8, 6, 4, 3, 7, 8 };




    Sei N die Länge des Arrays, und die Indexzählung des Arrays beginne ab




    Null. Ihr Sortieralgorithmus soll dann nach dem im folgenden beschriebenen




    Prinzip arbeiten:




    for (unsigned int i = 1; i < N; i++)




    {




    Nehme a und sortiere diesen Wert an der richtigen



    Stelle in den Bereich a[0] … a[i-1] ein. D.h. sollte der

    Wert eigentlich an die Position p (irgendwo zwischen




    0 und i) gehören, so werden die Werte a[p] … a[i-1] nach




    a[p+1] … a verschoben, und der einzusortierende Wert



    wird an die Stelle a[p] gesetzt.




    }




    Sie können die Aspekte der Schleife (Zählvariable, Schleifengrenzen,




    Schleifenbedingung) in ihrem Programm durchaus variieren. Nur das




    Prinzip des Algorithmus soll den Anforderungen entsprechen.




    Programmieren Sie ihren Sortieralgorithmus in eine Funktion
    void sortiere(), die das zu sortierende Array und die Arraylänge als



    Parameter übernimmt.




    Ein Testlauf:




    Vorher: 9, 3, 5, 2, 8, 6, 4, 3, 7, 8




    Nachher: 2, 3, 3, 4, 5, 6, 7, 8, 8, 9

    Drücken Sie eine beliebige Taste . . .

    aufgabe 2




    Erweitern Sie Ihr Programm aus Aufgabe P7.01 um eine flexiblere




    Initialisierung des Arrays. Arraygröße und Maximalwert jedes




    Arrayeintrags sollen vom Benutzer abgefragt werden. Für jeden der




    Arrayeinträge soll dann ein Zufallswert zwischen 1 und dem




    eingegebenen Maximalwert als initialer Wert gesetzt werden. Jeden




    einzelnen Zufallswert erhalten Sie durch Aufruf der folgenden Funktion:




    unsigned int zufall(const unsigned int untergrenze,




    const unsigned int obergrenze)




    {




    static bool initialisiert = false;




    if (! initialisiert++)




    srand((unsigned int) time(0));




    int bereich = (obergrenze - untergrenze) + 1;




    return untergrenze + int(bereich * rand() /




    (RAND_MAX + 1.0));




    }
    Zur Erklärung: Mittels dem einmaligen Aufruf von srand() wird der



    Zufallszahlengenerator initialisiert. Unter Zuhilfenahme der aktuellen

    Systemzeit wird dafür gesorgt, dass die Initialisierung bei jedem Aufruf
    verschiedenartig ausfällt. Mittels der Funktion rand() wird dann eine



    Zufallszahl vom Zufallszahlengenerator erfragt.




    Fügen Sie folgende Headerdateien hinzu, damit die in der Funktion




    zufall()
    verwendeten Bezeichner und Funktionen bekannt sind:



    #include <ctime>




    #include <cstdlib>




    Da Ihr Programm Zufallszahlen verwendet, wird natürlich nicht erwartet,




    dass Sie exakt die Beispielzahlen der Testläufe reproduzieren können.




    Ein Testlauf (Tastatureingaben unterstrichen):




    Bitte geben Sie die Anzahl der Array-Elemente ein: 5




    Bitte geben Sie die Maximalgroesse jedes Array-Elements ein: 20




    Vorher: 2, 19, 2, 16, 20




    Nachher: 2, 2, 16, 19, 20




    Drücken Sie eine beliebige Taste . . .




    Ein weiterer Testlauf (Tastatureingaben unterstrichen):




    Bitte geben Sie die Anzahl der Array-Elemente ein: 15




    Bitte geben Sie die Maximalgroesse jedes Array-Elements ein: 50




    Vorher: 5, 39, 35, 31, 31, 21, 39, 30, 27, 41, 50, 3, 36, 38, 24




    Nachher: 3, 5, 21, 24, 27, 30, 31, 31, 35, 36, 38, 39, 39, 41, 50

    Drücken Sie eine beliebige Taste .

    Danke im vorraus
  • Ja sollen wir jetzt deine Hausaufgaben machen?

    Fang doch mal einfach an und bei Problemen und Fehlern meldest du dich einfach hier wieder.

    PS: Du hast in diesem Forum die Möglichkeit den C++ Code in eine "Box" zu packen und automatisch zu "Highlighten", sowie ein Vorschau Button. ;)

    Quellcode

    1. int main()
    2. {
    3. // Beispiel
    4. }


    Quellcode

    1. [syntax="cpp"]
    2. int main()
    3. {
    4. // Beispiel
    5. }
    6. [/syntax]


    Edit: Ansatz? Kannst du die Grundlagen? Grundstruktur einer Konsolen Anwendung?
    ->

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. int main()
    4. {
    5. cout << "Hello World" << endl;
    6. return 0;
    7. }


    Mfg Rushh0ur