sortieren u. gruppieren von array...s.o.s
-
hallo zusammen,
ich haben einen array mit folgende werten:
{10, 15, 28, 22, 37, 11, 2, 3, 35} so die würde ich gern aufsteigend sortiern.
danach sollen die werte wiederrum sortiert werden in 0 bis 10; 11 bis 25 und 26 bis 40 und in 3 array (Klasse A, Klasse B u. Klasse C) abgespeichter werden so, das wenn der Benutzer "Klasse B" eingibt dann auch die werte dementsprechend angezeigt werden.Danke euch jetzt schon mal für eure antworten und hilfe....
-
Warum faengst Du nicht einmal mit den Algorithmen an, bevor wir uns (zusammen) an die Implementierung machen?
-
#include <vector> #include <algorithm> class A : public std::vector<unsigned> { public: A() = default; ~A() = default; }; using B = A; using C = A; template<class T> T extractNumbers( const std::vector<unsigned> &numbers, unsigned minnumber, unsigned maxnumber ) { T myclassobject; std::for_each( numbers.begin(), numbers.end(), [&]( unsigned num ) { if ( num >= minnumber && num <= maxnumber ) myclassobject.push_back( num ); } ); return myclassobject; } int main() { std::vector<unsigned> MyNumbers = { 10, 15, 28, 22, 37, 11, 2, 3, 35 }; std::sort( MyNumbers.begin(), MyNumbers.end() ); A result_a = extractNumbers<A> ( MyNumbers, 0, 10 ); B result_b = extractNumbers<B> ( MyNumbers, 11, 25 ); C result_c = extractNumbers<C> ( MyNumbers, 26, 40 ); }
-
Erben von std::vector? Warum das? Würde ich nicht machen!
Mit "Klassen" ist hier auch bestimmt nicht class gemeint.
An @HKN1979: schau dir std::vector, std::sort und std::upper_bound an.
-
@wob
ja mit Klasse ist nicht class gemeint, statt Klasse könnte man auch Gruppe nehmen.
-
@It0101
danke
-
@It0101
aber das mit der ausgabe funktioniert das nicht(?)
-
@HKN1979 sagte in sortieren u. gruppieren von array...s.o.s:
@It0101
aber das mit der ausgabe funktioniert das nicht(?)Bisschen was sollst du ja auch noch machen
-
@wob sagte in sortieren u. gruppieren von array...s.o.s:
Erben von std::vector? Warum das? Würde ich nicht machen!
Warum nicht? Bevor man eine Klasse baut und das einzige Member ist ein vector...
Klar, man hat keine Kontrolle über die Vector-Funktionen, da die vermutlich nicht virtual sind.
-
@It0101 vor allem ist
vector::~vector
nicht virtual.vector<unsigned> *v = new A; delete v;
Und wo ist der Nutzen deiner leeren Klasse?
-
@wob sagte in sortieren u. gruppieren von array...s.o.s:
@It0101 vor allem ist
vector::~vector
nicht virtual.Das ist immer wahr, wenn man von einer nicht-polymorphen Klasse ableitet; und trotzdem ist es sowohl erlaubt als auch geläufig? Wir sind hier nicht in Java!
-
@wob sagte in sortieren u. gruppieren von array...s.o.s:
Und wo ist der Nutzen deiner leeren Klasse?
Der Threadersteller schrieb, er wollte eine Klasse. Zumindest habe ich das so interpretiert und ich ging auch davon aus, dass die Klasse einen Sinn hat und somit später noch mit Leben gefüllt werden soll, denn niemand sortiert und gruppiert Zahlen einfach nur, damit die CPU sich nicht langweilt.
-
Bitte verwirrt doch nicht einen Anfänger. Hier ist nichts mit Vererbung etc. gefragt.
#include <algorithm> #include <vector> int main() { using namespace std; auto v = vector<int> { 10, 15, 28, 22, 37, 11, 2, 3, 35 }; sort(begin(v), end(v)); auto grenze = upper_bound(begin(v), end(v), 10); auto klasseA = vector<int>(begin(v), grenze); auto grenze2 = upper_bound(grenze, end(v), 25); auto klasseB = vector<int>(grenze, grenze2); auto klasseC = vector<int>(grenze2, end(v)); // die Ausgabe von klasseA, B, C überlasse ich dir. }
-
@wob sagte in sortieren u. gruppieren von array...s.o.s:
Bitte verwirrt doch nicht einen Anfänger. Hier ist nichts mit Vererbung etc. gefragt.
Stimmt. Dagegen sind "auto" und "upper_bound" Keywords, die grundsätzlich jeder Anfänger mitbringt
-
ja im wahrstensinne des wortes bin wirklich noch sehr frisch was c++ angeht...
-
@wob Danke ich gib mein bestes
-
@wob
hast du ne mail adresse wo dich dich anschreiben kann?
-
Dieser Beitrag wurde gelöscht!
-
Tjo, für ein Anfänger sind selbst gemachte Algorithmen als Denksport geignet. Ich geb dir mal ein Gerüst:
#include <iostream> #include <vector> using namespace std; void tausche_elemente( int& zahl_1, int& zahl_2 ) { // Hier vertauschst du 2 Zahlen in deinem Array. } void sortieren( vector<int>& zahlen ) { // Hier schreibst du einen einfachen Sortieralgorithmus. } void ausgabe( const vector<int>& zahlen ) { // Hier gibst du dein Array aus. } int main() { vector zahlen{ 10, 15, 28, 22, 37, 11, 2, 3, 35 }; sortieren( zahlen ); cout << "Sortiert: "; ausgabe( zahlen ); vector<int> klasse_a; vector<int> klasse_b; vector<int> klasse_c; for( const auto& zahl : zahlen ) { // Hier machst du if-Abfragen um die Zahlen in Klassen einzuteilen. } cout << "Klasse A: "; ausgabe( klasse_a ); cout << "Klasse B: "; ausgabe( klasse_b ); cout << "Klasse C: "; ausgabe( klasse_c ); }
-
@out
DANKE!!!
durfte ich deine mail adrsse haben?