Arrays Sortieralgorithmus



  • Hallo,
    könntet ihr mir bei meinen Script helfen.
    Irgendwie klappt es nicht so wie ich es möchte.
    Die Aufgabe:
    Es werden 5 Werte eingegeben, danach soll ein Algorithmus diese sortieren.

    #include <iostream>
    using namespace std;

    int main()
    {
    int anzahl=5;
    int wert[5];
    int schritt=0;
    int a=0, b=1, c=0, d=0;

    cout<<"Bitte geben sie 5 Integer Werte ein: "<<endl;
    cout<<endl;

    for (int zähler=0;zähler<anzahl;zähler++)
    {
    schritt=schritt+1;
    cout<<schritt<<". "<<"Wert: ";
    cin>>wert[zähler];
    cout<<endl;

    }

    for (int zähler=0;zähler<5;zähler++)
    {

    for (int srt=0;srt<anzahl;srt++)
    {
    a=a++;
    b=b++;

    if (wert[a]>wert[b])
    {
    c=c+wert[a];
    d=d+wert[b];
    wert[a]=0;
    wert[b]=0;
    wert[a]=wert[a]+d;
    wert[b]=wert[b]+c;
    }
    c=0;
    d=0;
    }
    a=0;
    b=1;

    }
    cout<<wert[0]<<endl;
    cout<<wert[1]<<endl;
    cout<<wert[2]<<endl;
    cout<<wert[3]<<endl;
    cout<<wert[4]<<endl;
    return 0;
    }
    Das ist mein Script.
    Irgendwie klappt es leider nicht so und ich zerbrech mir daran schon über eine Stunde den Kopf.
    Ich hoffe ihr könnt mir weiterhelfen.



  • Hallo,

    wenn Du Dir schon über eine Stunde den Kopf zerbrichst, kannst Du uns noch sagen, was irgendwie nicht klappt? Hast Du einen Compiler-Fehler (welchen?), stürzt Dein Programm ab (wo, mit welchem Fehler?), sortiert Dein Programm von links nach rechts, statt von oben nach unten? Und bitte schreib Deinen Code (nicht Script) in Code-Tags.
    Was mir so aufällt:
    zähler ist kein gültiger Bezeichner. Manche Compiler werden das "ä" nicht mögen.

    a=a++; // ist undefiniert. 
    //Schreib entweder 
    a=a+1;
    // oder
    a++;
    

    In der Schleife werden dabei sowohl a als auch b größer als 4 und Du greift auf
    wert[a] bzw. wert[b] zu. Da stimmt irgendwas nicht.



  • #include <iostream>
    using namespace std;

    int main()
    {
    int anzahl=5;
    int wert[5];
    int schritt=0;
    int a=0, b=1, c=0, d=0;

    cout<<"Bitte geben sie 5 Integer Werte ein: "<<endl;
    cout<<endl;

    for (int zähler=0;zähler<anzahl;zähler++)
    {
    schritt=schritt+1;
    cout<<schritt<<". "<<"Wert: ";
    cin>>wert[zähler];
    cout<<endl;

    }

    schritt=0;

    for (int zähler=0;zähler<4;zähler++)
    {

    for (int srt=0;srt<4;srt++)
    {

    if (wert[a]>wert[b])
    {
    c=c+wert[a];
    d=d+wert[b];
    wert[a]=0;
    wert[b]=0;
    wert[a]=wert[a]+d;
    wert[b]=wert[b]+c;
    }
    c=0;
    d=0;
    a=a+1;
    b=b+1;
    }
    a=0;
    b=1;

    schritt=schritt+1;
    cout<<schritt<<". Durchgang: "<<endl;
    cout<<endl;
    cout<<wert[0]<<endl;
    cout<<wert[1]<<endl;
    cout<<wert[2]<<endl;
    cout<<wert[3]<<endl;
    cout<<wert[4]<<endl;
    cout<<endl;

    }

    return 0;
    }

    Klappt nun alles, danke dir 🙂



  • Du hast aber einen ziemlich komplizierten (d.h. unnötigen) Code zum Tauschen zweier Werte. Such mal nach "Dreieckstausch"!


Anmelden zum Antworten