C++ compare & sort mit strings

Hallo zusammen,

es ist mal wieder soweit, ich brauche eure Hilfe in Sachen c++ programmierung.

Ich möchte die beiden Funktionen sort() und compare()
beutzen um strings zu sortieren.
Zwar kann man dieses per Schleifen-Abfrage lösen wie zum Beispiel:

ret = s1.compare(s2);

if(ret
#include
#include
#include

using namespace std;

const int MAX = 30;

*void Programm_1()
{

int i(0);
string Input[MAX] = {„Hallo“, „zusammen“, „ich“,„brauche“, „hilfe“,„bei meinem Projekt“};

sort(Input[i].compare(Input[i+1]),Input+6);
und an dem Befehl haperts !!!

Und ab hier brauche ich eure HILFE.

P.S.: Die Strings sollen nach dem ABC sortiert werden
Beispiel: „Hallo“ „ich“ „will“ „jetzt“ „Essen“
darus folgt: „Essen“, „Hallo“, „ich“, „jetzt“, „will“

Danke im Voraus

}

Hallo Jaropus,

es ist mal wieder soweit, ich brauche eure Hilfe in Sachen c++
programmierung.

ok.

Ich möchte die beiden Funktionen sort() und compare()
beutzen um strings zu sortieren.
Zwar kann man dieses per Schleifen-Abfrage lösen wie zum
Beispiel:
ret = s1.compare(s2);
if(ret

P.S.: Die Strings sollen nach dem ABC sortiert werden
Beispiel: „Hallo“ „ich“ „will“ „jetzt“ „Essen“
darus folgt: „Essen“, „Hallo“, „ich“, „jetzt“, „will“

Das ist normale STL, tägliches Brot der
C+±Programmierer. In etwa sollte das so:

#include 
#include 
#include 
#include 

using namespace std;

// Nutzerdefinierte Vergleichsfunktion
bool comparestr (const string& s1, const string& s2) { return (s1 input( txt, txt+7 );
 // Feld sortieren
 sort( input.begin(), input.end(), comparestr );
 // sortiertes Feld ausgeben
 for\_each( input.begin(), input.end(), prettyprint );
}

aussehen. Kauf Dir mal ein gutes (Josuttis?) Buch
zur STL und arbeite es Schritt für Schritt durch.

Die Sortierfunktion ‚comparestr‘ wäre hier optional,
da das, was diese Funktion macht, ‚sort‘ per default
sowieso macht.

Und - keine Panik, alle haben wir am Anfang auf die
STL geschaut wie das Schwein ins Uhrwerk. Das wurde
dann nur noch einmal von Boost übertroffen :wink:
(http://www.boost.org/doc/libs/1_42_0/libs/multi_inde…)

Grüße

CMb

hmm,

Prog. funkt nicht.
Laufen tut es zwar aber die Wörter in der richtigen Reigenfolge ausgeben ist nicht drinne.

Könnte man nicht das einlesen direkt per string machen?
Zum Beispiel:

const in MAX 200
string Input[MAX];

for(int i(0); Input[i] != „.“ && i

Hallo

Prog. funkt nicht.

Doch, jedenfalls hier.

Laufen tut es zwar aber die Wörter in der richtigen
Reigenfolge ausgeben ist nicht drinne.

Doch, tut es. Es sortiert nur Grossbuchstaben
vor Kleinbuchstaben. Ist das nicht gewünscht,
musst Du eine auch Deinem System vorhandene
Vergleichsfunktion verwenden, die Groß- und
Kleinschreibung nicht beachtet, das sind z.B.
stricmp (Windows), _stricmp (Windows, neuere
MS-Compiler) oder strcasecmp (Unix/Linux).

Könnte man nicht das einlesen direkt per string machen?
Zum Beispiel:

const in MAX 200
string Input[MAX];
for(int i(0); Input[i] != „.“ && i

Wozu? Texteingabe und Textverarbeitung sind
in Deinem Beispiel getrennte Angelegenheiten.

und nun würde das sortieren erfolgen mit compare und sort.

Wahrscheinlich hab ich jetzt Deine Hausaufgaben gemacht :wink:

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

void eingabe(vector& input, const string& message="");
void ausgabe(vector& input);

 int main(int argc, char\*argv[])
{
 vector input;
 eingabe(input, "mach mal:\n");
 ausgabe(input);
 return 0;
}

void eingabe(vector& sv, const string& message) {
 if(message.length()) cout & input) {
 sort( input.begin(), input.end(), comparestri );
 for\_each( input.begin(), input.end(), prettyprint );
}

Grüße

Nein, hatte das Prog. schon ferig aber gefiel mir nicht mit den vielen Zeigern die ich hatte.

Hier meins (mit Hilfe):

int compare( const void *a, const void *b );

void Programm_1()
{
string Eingabe[MAX];
int i;

cout > Eingabe[i];

qsort( (void *)Eingabe, MAX, sizeof( string ), compare );

for (i=1; icompare(*(string*)b);
}

funkt mit String direkt :smile: