Lexikographisch sortieren
-
Hallo,
ich muss zwar ein C++-Programm schreiben, aber unser Prof kann es einfach nicht lassen, immer nur C-Bibliotheken zu benutzen. Deshalb poste ich mein Problem hier rein. Ich muss 20 Strings einlesen und die dann lexikographisch sortiert wieder ausgeben. Ich bekomme in Zeile 27 u. 28 eine Fehlermeldung:
zeicheneinlesen.cpp:27: Fehler: Ungültiger Feldzuweisung zeicheneinlesen.cpp:28: Fehler: unverträgliche Typen in Zuweisung von »const char*« an »char [10]«
Aber da ich mit Pointern noch nicht so gut umgehen kann, verstehe ich auch die Meldung nicht. Hier mein Code:
#include <cstdio> #include <cstring> int main(){ char eingabe[20][10]; const int n = 10; for(int i = 0; i < n; i++){ printf("Bitte geben Sie das %i.te Wort ein: ",i+1); scanf("%s",eingabe[i]); } printf("\nSie haben folgende Wörter eingegeben: \n"); printf("["); for(int i = 0; i < n; i++){ printf("%s",eingabe[i]); if(i != n-1)printf(", "); else printf("]\n"); } //lexikalische Sortierung char *tmp; do{ for(int i = 0; i < n-1; i++){ if(strcmp(eingabe[i], eingabe[i+1]) > 0){ tmp = eingabe[i+1]; eingabe[i+1] = eingabe[i]; eingabe[i+1] = tmp; } } } while(tmp); //d.h. while(tmp != 0) //lexikographisch sortierte Ausgabe for(int j = 0; j < n; j++) printf("%s\n",eingabe[j]); return 0; }
Was ist mein Fehler?
-
#include <cstdio> #include <cstring> int main(){ char eingabe[20][10]; const int n = 10; for(int i = 0; i < n; i++){ printf("Bitte geben Sie das %i.te Wort ein: ",i+1); scanf("%s",&eingabe[i][0]); } printf("\nSie haben folgende Wörter eingegeben: \n"); printf("["); for(int i = 0; i < n; i++){ printf("%s",&eingabe[i][0]); if(i != n-1)printf(", "); else printf("]\n"); } //lexikalische Sortierung char tmp; int x = n; do{ for(int i = 0; i < n-1; i++){ if(strcmp(&eingabe[i][0], &eingabe[i+1][0]) > 0){ tmp = eingabe[i+1][0]; eingabe[i+1][0] = eingabe[i][0]; eingabe[i][0] = tmp; } } } while(x--); //d.h. while(tmp != 0) //lexikographisch sortierte Ausgabe for(int j = 0; j < n; j++) printf("%s\n",&eingabe[j][0]); return 0; }
-
Danke, es läuft. Aber nun habe ich ein anderes Problem. DIese Variante für die lexikographische Sortierung habe ich aus einem Buch. Aber es wird bei mir nichts sortiert. Hab z.B. n auf 5 (also 5 Strings eingeben) gesetzt und folgendes herausbekommen:
Bitte geben Sie das 1.te Wort ein: Hallo Bitte geben Sie das 2.te Wort ein: Welt Bitte geben Sie das 3.te Wort ein: mir Bitte geben Sie das 4.te Wort ein: ist Bitte geben Sie das 5.te Wort ein: schlecht Sie haben folgende Wörter eingegeben: [Hallo, Welt, mir, ist, schlecht] Hallo Welt mir ist schlecht
Es wird nichts stortiert...warum?