Ein Array aufteilen in zwei neue und wieder zusammenfügen
-
Hallo Leute,
ich erzeuge ein Array mit Zufallszahlen. Dieses Array soll nun in zwei geteilt, dann beide sortiert und anschließend beide wieder sortiert zu einem Zusammengefügt werden. Über Sinn oder Unsinn kann man sich jetzt streitenIch stehe total aufn Schlauch und weiß nicht wie ich das anstellen soll. Habe sonst nie was mit C zu tun...eher andere Programmiersprachen. Gibt es da irgendwie eine Split und Merge Funktion in C?
Falls einer Beispiele, Links zu diesem Thema oder sowas hat, dann nur her damit! Vielen Dank!
Das Erzeugen der Zufallszahlen und speichern in einem Array habe ich hinbekommen.
Juhuuu!
Danke und Grüße!
-
Speicher für neuen Array reservieren malloc, calloc, free. Die hälfte der Werte dort speichern. Realloc des alten Arrays.
Siehe folgende Links:
http://www.cplusplus.com/reference/clibrary/cstdlib/malloc/
http://www.cplusplus.com/reference/clibrary/cstdlib/calloc/
http://www.cplusplus.com/reference/clibrary/cstdlib/free/
http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/Man muss alles selber machen!
-
Du kannst auch mit Zeigern arbeiten.
int feld[200]; int *ersteHaelfte = &feld[0]; // oder = feld; int *zweiteHaelfte = &feld[100]; // oder = feld+100;
zugreifen kannst du mit z.B.:
feld[2] = feld[102]; *(ersteHaelfte+2) = *(zweiteHaelfte+2); ersteHaelfte[2] = zweiteHaelfte[2]; // gibt evtl. eine Warnung
Allerdings mußt DU dafür sorgen, dass das Programm weiß wie lang die Felder sind.
Das nimmt C dir leider nicht ab.
-
Danke für eure Tipps!
@DirkB: Mit Zeigern möchte ich eigentlich nicht arbeiten. Ich bin schon eh nicht wirklich fit in C, daher würde ich es lieber ohne machen.
-
Es gibt Unterschiede zwischen Arrays und Zeigern. Die sind aber nicht so groß wie du meinst.
Wenn du mit Arrays arbeitest nutzt du mehr oder weniger Zeiger.Bei malloc/free hast du auch nur Zeiger.
Dann mußt du halt die Arrays anlegen:
int feld[200]; int ersteHaelfte [100]; int zweiteHaelfte[100];