Ich habe versucht, ein Programm in C++ zu erstellen, das eine Zeichenfolge in alphabetischer Reihenfolge sortiert, wobei die Großbuchstaben ihrem Kleinbuchstaben entsprechen. Beispiel: DCBAdcba Sortiert string: aabbccddAnordnen einer Zeichenfolge in Großbuchstaben - erste alphabetische Reihenfolge C++
Da unten ist der Code.
#include <iostream>
#include <string>
#include <cctype>
struct char_ {
char c;
char diff;
char_();
char_(char x);
};
char_::char_() {
c = 0;
diff = 0;
}
char_::char_(char x) {
c = std::tolower(x);
diff = c - x;
}
void charswap(char_& x, char_& y) {
char_ temp;
temp = x;
x = y;
y = temp;
}
int main() {
std::string str;
getline(std::cin, str);
char_* str2 = new char_[str.length()];
for (int i = 0; i < str.length(); i++) {
str2[i] = char_(str[i]);
}
/*
for (int i = 0; i < str.length(); i++) {
std::cout << str2[i].c << std::endl;
}
*/
for (int i = 0; i < str.length(); i++) {
for (int j = i; j < str.length(); j++) {
if (str2[i].c > str2[j].c)
charswap(str2[i], str2[j]);
}
}
for (int k = 0; k < str.length(); k++) {
std::cout << str2[k].c << "\t" << (int)str2[k].diff << std::endl;
}
for (int i = 0; i < str.length(); i++) {
str2[i].c = str2[i].c - str2[i].diff;
}
for (int i = 0; i < str.length(); i++) std::cout << str2[i].c;
std::cout << "\n";
return 0;
}
A char_ struct die einzelnen Zeichen zu speichern, erzeugt wird (umgewandelt in Kleinbuchstaben) und deren Differenz von der entsprechenden Großbuchstaben (0 oder 32, je nachdem, ob der ursprüngliche char Klein- oder Groß war, jeweils). Anschließend sortiert er die char_-Zeichen auf der Basis ihrer Kleinbuchstaben. Und nach der Sortierung fügen wir den Unterschied zum Zeichen zurück, um die Großbuchstabenform zu erhalten.
Aber wenn ich versuche, diese Zeichenfolge zu geben, gibt es das folgende Ergebnis.
DCBAdcba
aabbccdd
Ich kann nicht verstehen, was hier passiert.
Es klingt wie Sie müssen lernen, wie Sie einen Debugger verwenden, um durch Ihren Code zu gehen. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht.Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: ** [Wie kleine Programme zu debuggen] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver
Sie erstellten einen Sortierungsalgorithmus ohne Berücksichtigung der Groß- und Kleinschreibung. Ich sehe keinen Code, der den Hauptstädten Priorität einräumt. –
Tipp - Suchen Sie nach 'Ascii-Tabelle' und notieren Sie die Werte, die den einzelnen Zeichen zugewiesen sind. – UKMonkey