4 Werte vergleichen und in einer bestimmtenten Reiehnfolge ausgeben



  • Hi,

    bin neu hier und habe auch gleich ein Problem bzw. Frage.
    Sitz jetzt schon seit 2 Wochen an diesem Problem das ganze Netz durchforstet und noch keine Lösung gefunden. Muß dazu sagen das ich mich erst seit ca. 2 Monaten mit C++ beschäftige.
    Nun zum Problem:

    Ich gebe 4 verschiedene Zahlen ein z.B.: Zahl1=8 Zahl2=4 Zahl3=36 Zahl4=2
    jetzt möchte ich diese Zahlen der Rangfolge nach ausgeben mit der größten beginnend (in diesem Fall
    1: Zahl3
    2: Zahl1
    3: Zahl2
    4: Zahl4
    ) habe das auch schon hinbekommen mit if anwendungen aber dann konnte ich nur den größten Wert anzeigen lassen und die restlichen waren unsortiert. Und das Programm hatte prommt einen 120 zeilen Code. Gibt es da eine Alternative?
    Wenn zwei Werte gleich sind sollten diese den gleichen Platz belegen(bei der ausgabe) z.B. Zahl1=14 Zahl2=3 Zahl3=14 Zahl4=8 dann sollte es so sein
    1: Zahl1
    1: Zahl3
    3: Zahl4
    4: Zahl2

    hoffe mir kann jemand helfen danke im vorraus...



  • Schau dir mal http://de.wikipedia.org/wiki/Bubblesort an, der Sortieralgorithmus ist relativ einfach umzusetzen.



  • Habe mal sagen hören, dass da die STL noch ganz nützlich sein soll. 😃

    Aber den Bubblesort sollte man schon einmal selber implementiert haben. 😉



  • std::sort ist dein Freund



  • drakon schrieb:

    ...Aber den Bubblesort sollte man schon einmal selber implementiert haben. 😉

    Sagt wer ?
    Ist das sowas wie "Baum pflanzen, Sohn zeugen, Ferrari fahren" ?

    Gruß,

    Simon2.



  • Jepp. Im Grunde schon. Sortieralgorithmen sind ein gutes Beispiel zum Erlernen von der Bedeutung von Performanz und den gegebenen Möglichkeiten.



  • hi,
    danke für die hilfe,
    das mit dem bubblesort habe ich soweit verstanden aber wie setz ich das in c++ um? wäre net wenn mir jemand nen beispiel quellcode zeigen könnte so das ich es besser nach vollziehen kann!

    danke



  • nochmal: hab was vergessen das mit std::sort habe ich auch nachgeschaut is auch soweit klar aber wenn ich das bei mir anwende funktioniert das auch nicht wenn da jemand nen quellcode hätte so das ich das auch nachvollziehen kann würd ich mich freuen...

    danke



  • einfaches bubblesort ist zum beispiel so:

    const int anzahl = 10;
    int zahlen[anzahl];
    // zahlen füllen
    
    for(int i = 0; i < anzahl; i++) // algorithmus sooft durchlaufen wie elemente im array
    {
      for(int j = 1; j < anzahl; j++)  // jedes element durchgehen und...
      {
        if(zahlen[j-1] < zahlen[j])    // vergleichen, ob das folgende größer ist
          std::swap(zahlen[j-1], zahlen[j]);  // wenn ja, umtauschen
      } 
    }
    
    // mit std::sort wäre es in dem falle so:
    std::sort(zahlen, zahlen+anzahl);
    


  • #include <cstdlib> // std::srand, std::rand
    #include <ctime> // std::time
    #include <vector> // std::vector
    #include <algorithm> // std::sort, std::copy
    #include <iterator> // std::ostream_iterator
    
    int main()
    {
        // Vector mit Zufallszahlen initialisieren.
        std::srand(static_cast<unsigned>(std::time(NULL)));
        std::vector<unsigned int> data(10, std::rand());
    
        // Vector ausgeben
        std::copy(data.begin(), data.end(), std::ostream_iterator<unsigned int>(std::cout, ", "));
        // Vector sortieren
        std::sort(data.begin(), data.end());
        // Vector ausgeben
        std::copy(data.begin(), data.end(), std::ostream_iterator<unsigned int>(std::cout, ", "));
    }
    

    So 😉


Anmelden zum Antworten