c++

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

  • 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
  • 2 Threads = Schlecht
    Von so etwas bekomme ich Augenkrebs. Nicht nochmal so eine Ordnung rein, ja? Alles zusammenfassen und eine Problemschilderung reicht.
    Nun, solch ein Aufbau nötigt mich irgendwie eine ziemlich beknackte Antwort zu geben, die sicherlich so nicht von deinem Dozent erwartet wir:

    Quellcode

    1. #include <iostream>
    2. #include <algorithm>
    3. int main() {
    4. int array[] = { 23, 5, -10, 0, 0, 321, 1, 2, 99, 30 };
    5. int elements = sizeof(array) / sizeof(array[0]);
    6. std::sort(array, array + elements);
    7. for (int i = 0; i < elements; ++i)
    8. std::cout << array[i] << ' ';
    9. }

    Wenn du jetzt intelligent bist schaust du dir den Inhalt der Funktion std::sort an. :D

    MfG
    Check