elemente in mehrdim.array tauschen
-
danke für die hilfe bisher.
@smilingman: ja leider muss es ein array sein

@(D)Evil: okay ich glaube das kommt hin, werd es heut mal ausprobieren
-
paddel schrieb:
...
also ich habe ein zweidimensionales char array mit unterschiedlichen zeichenkettenBsp.:
mein_array[0]="abc";
mein_array[1]="accba";
mein_array[3]="accb";
mein_array[4]="abcabcabc";mein ziel ist es die ketten zu sortieren mittels bubblesort ...
Man kann z.B. schreiben :
char mein_array[4] = {"abc", "accba", "accb", "abcabcabc"};Das ergibt ein eindimensionales Array aus Zeigern auf nullterminierte Zeichenketten verschiedenener Länge.
Man kann nach alphanumerischem Vergleich diese Zeiger sortieren.mfg
-
Glaubst du daran, dass das geht?
-
Sorry
char* mein_array[4] = {"abc", "accba", "accb", "abcabcabc"};
-
(D)Evil schrieb:
Glaubst du daran, dass das geht?
@(D)evil
char array[2] = {"string_01", "string_02" };**
das geht mit Sicherheit nicht!

-
(D)Evil schrieb:
sonst kopier einfach:
void swap_cstring(char*& first, char*& second) { char* tmp(new char[std::strlen(first) + 1]); // copy first to tmp std::strcpy(tmp, first); delete [] first; // copy second to first first = new char[std::strlen(second) + 1]); std::strcpy(first, second); delete [] second; // set tmp to second second = tmp; }.
char** array[2] = {"string_01", "string_02" }; std::cout << "#01: " << array[0] << "\n#02: " << array[1] << std::endl; swap_cstring(array[0], array[1]); std::cout << "#01: " << array[0] << "\n#02: " << array[1] << std::endl;...
habe das grad mal so übernommen, funktioniert aber nicht so ganz:
Fehler 3 error C2440: 'Initialisierung': 'const char [10]' kann nicht in 'char **' konvertiert werden c:\dokumente und einstellungen\*****\array.cpp 21 Fehler 4 error C2440: 'Initialisierung': 'const char [10]' kann nicht in 'char **' konvertiert werden c:\dokumente und einstellungen\*****\array.cpp 21 Fehler 5 error C2664: 'swap_cstring': Konvertierung des Parameters 1 von 'char **' in 'char *&' nicht möglich c:\dokumente und einstellungen\*****\array.cpp 23
-
Jap sorry stimmt. Eine Dimension außer acht gelassen ...
-
paddel schrieb:
... mein ziel ist es die ketten zu sortieren mittels bubblesort ...
#include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> void bubble(char** , int); int main() { char* mein_array[4] = {"abc", "accba", "accb", "abcabcabc"}; int N = sizeof(mein_array)/sizeof(char*); bubble(mein_array, N); for(int i = 0; i < N; i++) { std::cout << mein_array[i] << std::endl; } } void bubble(char** array, int elemente) { char* temp; while(elemente--) for(int i = 1; i <= elemente; i++) if(strcmp(array[i-1], array[i]) > 0) // < 0 ==absteigend sortieren { temp = array[i]; array[i] = array[i-1]; array[i-1] = temp; } }
mfg
-
dankeschön
eine frage noch,
und zwar wird die anzahl der zeichenketten (VAR_ANZ) sowie deren MAX_LAENGE erst während der laufzeit festgelegt.ist es richtig wenn ich das array so definiere:
char **mein_array = new char[VAR_ANZ][MAX_LAENGE];und wie übergebe ich dann dieses dynamische zweidimensionale array an die funktion bubble(); ?
-
paddel schrieb:
dankeschön
eine frage noch,
und zwar wird die anzahl der zeichenketten (VAR_ANZ) sowie deren MAX_LAENGE erst während der laufzeit festgelegt.ist es richtig wenn ich das array so definiere:
char **mein_array = new char[VAR_ANZ][MAX_LAENGE];und wie übergebe ich dann dieses dynamische zweidimensionale array an die funktion bubble(); ?
void bubble(char** , int); int main() { int VAR_ANZ = 4; int MAX_LAENGE = 10; char** mein_array = new char*[VAR_ANZ]; for (int i = 0; i < VAR_ANZ; i++) mein_array[i] = new char[MAX_LAENGE]; //z.B.: mein_array[0] = "abca"; mein_array[2] = "abcc"; strcpy(mein_array[1], "abc"); strcpy(mein_array[3], mein_array[2]); bubble(mein_array, VAR_ANZ); for(int i = 0; i < VAR_ANZ; i++) { std::cout << mein_array[i] << std::endl; } } void bubble(char** array, int elemente) { char* temp; while(elemente--) for(int i = 1; i <= elemente; i++) if(strcmp(array[i-1], array[i]) > 0) // < 0 ==absteigend sortieren { temp = array[i]; array[i] = array[i-1]; array[i-1] = temp; } }mfg