Pointer-Array in Funktionen
-
Hallo zusammen,
sitze grade am Thema Zeiger und Vektoren.
Ich wollte eine Funktion schreiben, welcher man ein Array mit Zeigern übergibt. Diese soll es sortieren.int Liste1[5] = { 40,70,30,50,60 }; int* ptrListe1[5] = { NULL }; for (int i = 0; i < sizeof(Liste1) / sizeof(int); i++) { ptrListe1[i] = &Liste1[i]; } sort(*ptrListe1); void sort(int* Liste) { int temp{ 0 }; bool sortiert; do { sortiert = false; for (int i = 0; i < sizeof(Liste) / sizeof(int)-1; i++) { if (Liste[i] > Liste[i + 1]) { temp = Liste[i + 1]; Liste[i + 1] = Liste[i]; Liste[i] = temp; sortiert = true; } } } while (sortiert == true); }
Es tut sich genau nichts, wo liegt der Fehler. Wäre nett wenn ihr mir helfen könntet.
-
Überlege dir mal, was innerhalb deiner sort-Funktion der Ausdruck
sizeof(Liste) / sizeof(int)-1
ergibt.
Wichtig: deine Variable "Liste" innerhalb von sort hat einen anderen Typ als die außerhalb von sort!
Falls nur das Pointer-Array sortiert werden soll, würde ich das ganze ein wenig abkürzen und deine komplette Funktion "sort" streichen und stattdessen schreiben:
sort(begin(ptrListe1), end(ptrListe1), [](const auto *a, const auto *b) { return *a < *b; });
-
Mmh, also übergebe ich die Länge des Arrays einfach als weiteren int Parameter? Dann müsste das ja funktionieren...
Danke für den Tipp mit der sort funktion
, aber ich wollte bewusst Bubblesort da reinbringen.´
Edit:
Hat funktioniert, danke dir
-
Hallo
Kann mir vielleicht jemand helfen?
Ich versuche gerade in einem unterprog. getlinr zu verwenden aber es funktioniert nicht.
Warum?
-
Ich meinte getline
-
C++Simon schrieb:
Ich meinte getline
string s; getline(cin,s); cout << s;