int variablen sortieren.



  • Hallo an alle,
    habe ein kleines problemm:
    Die sache ist die ich habe 6 vareablen von type int.
    z.B a=5,b=10,c=45,d=50,e=29.
    so, jetz will ich variablen sortieren so das die grosste variable zuerst angezeigt wird und dann die zweit grosste u.s.w.
    Wie kann ich das am besten machen ???
    Danke !!!!.



  • Wieso verwendest du überhaupt einzelne Variablen (noch dazu mit so aussagekräftigen Namen)? Pack sie lieber in ein Array oder einen STL-Container, dann machst du dir vieles einfacher (u.a. kannst du dann einmal std::sort() drüberjagen, um sie zu sortieren).



  • std::vector<int>
    std::sort


  • Mod

    Wilde Idee um Lehrer zu beeindrucken: Mit 12 Vergleich-Vertausch-Operationen in einer fest einprogrammierten Reihenfolge kannst du sechs Werte (egal ob als Feld oder a,b,c,d,e,f genannt) optimal sortieren:
    http://jgamble.ripco.net/cgi-bin/nw.cgi?inputs=6&algorithm=best&output=text
    Und dann sind du und dein Lehrer erst einmal eine gute Stunde damit beschäftigt zu durchschauen, wie das funktioniert 🙂



  • Er soll das zum Lernen selbst machen, ohne vorhandene Sort-Funktionen zu verwenden? 😕 Bei nur 6 Variablen geht das doch mit einer Reihe von if-Abfragen und einem Sortierarray. Kann man was mit lernen! Nicht immer ist alles schlecht, was ein Lehrer als Aufgabe stellt.



  • du kannst es auch mit vielen if verzweigunen programmieren,wenn du kein stl benutzen darfst zb if(a<b&&...)

    ups zu langsam 😞



  • hier mal eine Beispielimplementation für SeppJ's Vorschlag^^

    #include <iostream>
    
    struct comp_pair
    {
        int ia_; // index a
        int ib_; // index b
    };
    
    comp_pair comp_table[12] =
    {
        { 1, 2 },
        { 4, 5 },
        { 0, 2 },
        { 3, 5 },
        { 0, 1 },
        { 3, 4 },
        { 2, 5 },
        { 0, 3 },
        { 1, 4 },
        { 2, 4 },
        { 1, 3 },
        { 2, 3 }
    };
    
    void comp_and_swap(int & a, int & b)
    {
        int tmp = a < b ? a : b;
        b = a < b ? b : a;
        a = tmp;
    }
    
    void sort6(int * numbers)
    {
        for (int n = 0; n < 12; ++n)
        {
            comp_pair & comparison = comp_table[n];
            comp_and_swap(numbers[comparison.ia_], numbers[comparison.ib_]);
        }
    }
    
    int main(void)
    {
        int numbers[6];
        for (int n = 0; n < 6; ++n)
        {
            std::cout << (n + 1) << ". Number: ";
            std::cin >> numbers[n];
        }
    
        sort6(numbers);
    
        for (int n = 0; n < 6; ++n)
            std::cout << (n ? ", " : "") << numbers[n];
        std::cout << std::endl;
    
        return 0;
    }
    


  • Danke an alle hat mir echt geholfen !!!!
    Super


Anmelden zum Antworten