Zahlen sortieren im C++

Legende:
Legen Sie alle Programme so aus, dass der Benutzer die geforderten Berechnungen beliebig oft durchführen kann, ohne das Programm jedes mal neu zu starten.
Anspruchsvollere Aufgaben sind mit einem Stern (*) gekennzeichnet. (bezieht sich auf alle beispiele, ich muss eines machen das hört sich leichter an)

Aufgabe 3.1
Sortieren Sie 3 Zahlen ohne Verwendung von logischen Operatoren.
(erlaubt: *.C,*.cc,*.cpp)
 
Code:
#include <vector>
//...
int i1, i2, i3;
//...
std::vector<int> ivec;
ivec.push_back(i1);
ivec.push_back(i2);
ivec.push_back(i3);
ivec.sort(); //aufsteigend
Der Standard sieht keine Methode std::vector<T>::sort vor. Besser wäre die Verwendung von std::sort() aus <algorithm>:
C++:
std::sort(ivec.begin(), ivec.end());

Man könnte auch std::map nehmen:
Warum um alles in der Welt sollte man das tun wollen? :eek: Mal abgesehen davon, dass deine Implementierung fehlerhaft ist (gib mal „1 0.5 0“ ein).

Sehe ich auch so. Ein Sortieralgorithmus ohne logische Operatoren (wenn man sie schon nicht selber eintippt, stecken sie ja doch implizit in den Containerklassen drin) erscheint mit irgendwie preisverdächtig :-)
Eine fixe Anzahl von Werten lässt sich problemlos ohne Verwendung logischer Operatoren sortieren.

Grüße,
Matthias
 
Zuletzt bearbeitet von einem Moderator:
Sehr schön, und wie?^^
Ich löse normalerweise nicht fremder Leute Hausaufgaben, aber wenn das Interesse so groß ist…
C++:
#include <iostream>

void print3d(const double &a, const double &b, const double &c) {
  std::cout << a << " " << b << " " << c << std::endl;
}
 
int main() { 
  double a, b, c;
  if (!(std::cin >> a >> b >> c)) {
    return -1;
  }

  if (a < b) {
    if (b < c) {
      print3d(a, b, c);
    } else {
      if (a < c) {
        print3d(a, c, b);
      } else {
        print3d(c, a, b);
      }
    }
  } else {
    if (a < c) {
      print3d(b, a, c);
    } else {
      if (b < c) {
        print3d(b, c, a);
      } else {
        print3d(c, b, a);
      }
    }
  }

  return 0;
}

Grüße,
Matthias
 
Zuletzt bearbeitet von einem Moderator:
Mensch
*kopf hau*
Logische Operatoren sind dann : || und && zb, oder nicht?
und das andere sind vergleichs-operatoren, die man ja verwenden darf, oder?

So hab ich das voriges jahr zumindest in C aufgeschrieben, und hab mir jetzt eingebildet das sei falsch -.-
 
Genau, log. Ops sind und/oder/nicht, also && || !

Die "Anderen" sind dann in deinem Fall wohl == < <= > >= !=

Ob man die als logisch bezeichnet, ist irgendiw Ansichtssache...wenn euer Lehrer nicht der Meinung ist, wirds für die HÜ wohl stimmen :)
 
! gehört auch dazu weils ja des non is :) hatte gestern Praktikum und da hat er es so vorgestellt aber vielleicht versuch ich auch die andere Hü XD mal sehen. des blöde is die do/while schleife für des öfter starten weil ich de ned kapiere XD
 
Zurück