Wie alphabetisch Sortieren von Zeichenfolgen?

Habe ich versucht, diese zu verwenden, c++ - Programms zum Sortieren von 5 Namen alphabetisch:

#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;

int main()
{
char names[5][100];
int x,y,z;

char exchange[100];

cout << "Enter five names...\n";

for(x=1;x<=5;x++)
{
    cout << x << ". ";
    cin >> names[x-1];
}
getch();

for(x=0;x<=5-2;x++)
{
    for(y=0;y<=5-2;y++)
    {
        for(z=0;z<=99;z++)
        {
            if(int(names[y][z])>int(names[y+1][z]))
            {   
                strcpy(exchange,names[y]);
                strcpy(names[y],names[y+1]);
                strcpy(names[y+1],exchange);
                break;
            }
        }   
    }
}   

for(x=0;x<=5-1;x++)
    cout << names[x];

return 0;
}

Wenn ich eingeben, Earl, Don, Chris, Bill und Andy, bzw., bekomme ich diese:

AndyEarlDonChrisBill

Könnte mir bitte jemand sagen, was falsch mit meinem Programm?

  • Nachschlagen strcmp.
  • Haben Sie sich überlegt mit std::string und seine std::string::compare - Funktion?
  • Mehr wie look-up - std::string
  • Unverblümt, Ihr Programm trägt keine offensichtliche Beziehung zu einer rationalen string Sortier-Algorithmus.
  • Und ich würde gerne wissen, warum du subtrahieren 2 aus 5 in der for-Schleife Bedingung...
  • bitte denken Sie in Bereiche ohne die Obere Grenze - mit einem Bereich [0,5), die die zahlen 0, 1, 3, 4
  • Dein code ist lustig (abgesehen davon, dass übermäßig komplexe): es umfasst conio.h was nicht standard ist, und es nicht scheinen, um in Ihrem code verwendet, er verwendet cstring Bibliothek, das ist eine ziemlich einfache Sache. Wenn Sie versuchen zu lernen, C++ (nicht C) wäre es einfacher zu lernen ist C++ string-Bibliothek-Merkmale (<string> mit den zugehörigen std::string Klasse, wie andere erwähnt). Es sei denn, Sie haben einen starken Grund für die Verwendung von arrays, ist es besser, die Verwendung von standard-Containern statt (z.B. std::vector im <vector>). Haben Sie schreiben den code selbst, oder haben Sie versucht, die Anpassung etwas im internet gefunden?
  • Ich angepasst, das von etwas, das ich gefunden im internet und bin noch immer verwendet, um c++. Ich denke, dass ich versehentlich setzen Sie die conio.h header. Die einzige string-header, die ich kannte, war cstring, also danke für den Tipp.
  • Oh, ich vergaß, das zu erwähnen, aber ich bin vertraut mit strcmp, strcat und strcpy Funktionen, aber ich bin mir nicht sicher, wie Sie auf diese situation anzuwenden.
  • strcmp vergleicht zwei strings und sagt Ihnen, was kommt zuerst in alphabetischer Reihenfolge. Nichts in deinem code tut dies.

InformationsquelleAutor JayKay | 2013-08-31
Schreibe einen Kommentar