Vertauschen von Arrayelementen mit ungleicher Länge

Smokers

Grünschnabel
Folgendes Problem:

zu erstellen ist ein Programm, das aus einem eingegebenen Alphabet , welches in der Eingabe-Reihenfolge auch die sortierreihenfolge festlegt, zufällige Zeichenketten erstellen soll, und diese dann wie in einem Lexikon anordnen soll...

Zur verdeutlichung der Testfall (z beinhaltet die random zeichenketten)
char **z;
Alphabet a = {a,b,c,d,e,f}

z[0] = "abbfdddc"
z[1] = "abbcdf"
z[2] = "cfff"
z[3] = "ceff";

und beliebige andere Kombinationen über dem Alphabet.
Dadurch das a der kleinste Buchstabe in diesem Alphabet ist ist die Zeichenkette z[1] an erster Position.
Der Buchstabe 1 von z[0] und z[1] ist zwar gleich, jedoch steht dann das c später vor dem f in unserem Alphabet.
Da unser Alphabet so aussieht wie unser normales ist die sortierung so einfach, wäre jedoch das z zuerst in A so wäre die Sortierung rückwärts.



Nun das eigentliche Problem:

Da mein 2D Array nun unterschiedlich lange char arrays enthält, habe ich ein problem damit die Reihenfolge zu ändern.

dazu der markierte Teil hier im code:


Code:
protected

Das Problem ist also wenn ich das array was an Position z[1] ist mit z[0] tauschen will geht das , da die Lönge von z[0] größer ist, jedoch wenn ich z[0] auf z[1] setzen will, will ich ein Array der Größe 8 in ein array der Größe 6 pressen.
Das erzeugt Müll.

Wie kann ich die Elemente einfach nur in der Reihenfolge des Arrays z ändern, ohne das sihre Speicherplätze sich ändern?

Ich hoffe ich konnte es eingermaßen gut formulieren und ich weiß es ist ziemlich komplex... :-/
 
Zuletzt bearbeitet:
Hi.

Man kann die Elemente eines Arrays ganz einfach über eine swap-Operation austauschen. Warum du da mit calloc usw. herumhantierst erschließt sich mir nicht. Du mußt selbstverständlich dann auch die entsprechenden count_elements Einträge vertauschen.

Kennst du denn Strukturen? Man hätte eine Struktur definieren können, die ein Array und dessen Größe enthält:
C:
typedef struct {
  int* array;
  size_t size;
} array_t;
Gruß
 
Naja das Nutzen von calloc etc ist leider Pflicht laut Aufgabenstellung.
An dieses struct habe ich auch schon gedacht, jedoch sollen wir das nur mit den bereits behandelten funktionen und hilfsmitteln lösen.

Ähnlich in Java dürfen wir auch keine Array-lists nutzen obwohl das die Aufgaben meilenweit vereinefachen würde.


Du hast mir aber schon den entscheidenden tipp gegeben.
Ich habe dummerweise vergessen auch die längen im count_elements zu tauschen, ich habe lediglich den inhalt der arrays vertauscht.

Daher kam der müll raus, ich danke dir vielmals, ich hätte es selber wirklich nichtmehr gesehen.
Dank dir vieeelmals.
 
Zurück