Zweites(Zeiger?) Array sortieren



  • Cast "(int*)" bedeutet soviel wie explizite Typkonvertierung.

    Wieviele Elemente in deinem Array vorhanden sind, musst du dir entweder vorher in einer extra Variablen merken, oder du kennzeichnest das letzte Element in dem Array mit einem Wert, welcher nicht vorkommen darf, also zB -1, wenn klar ist, dass keine negativen Werte vorkommen.



  • Ich habe jetzt eine Variable "laenge", in der die Anzahl der Datensätze gespeichert ist, die Funktion müsste dann also:

    numArray2 = (int) malloc(laenge*sizeof(int));	
    
    for(i=0;i<100;i++){
    numArray2[i]=numArray[i];
    }
    

    heißen, ist das richtig?

    Wenn ja würde mich das ein großes Stück weiterbringen! 🙂



  • statt

    for(i=0;i<100;i++){
    

    lieber

    for(i=0;i<laenge;i++){
    

    Das sollte dann so passen.



  • Und wieder was übersehen, danke für die Hilfe 😉



  • Ich habe jetzt einen Testlauf gemacht, bekomme aber eine Fehlermeldung:
    "numArray2 undeclared".
    Muss ich das zu erzeugende Array nun noch vor der main-Funktion deklarieren?
    Wäre das dann "int numArray2" oder "int numArray2[]" oder wie müsste das dann aussehen?


  • Mod

    Metalmind01 schrieb:

    Ich habe jetzt einen Testlauf gemacht, bekomme aber eine Fehlermeldung:
    "numArray2 undeclared".
    Muss ich das zu erzeugende Array nun noch vor der main-Funktion deklarieren?
    Wäre das dann "int numArray2" oder "int numArray2[]" oder wie müsste das dann aussehen?

    Code herzeigen!



  • void Bubblesort(int *array)    //Bubblesort-Funktion
    {
        int i;
        int j;
        int laenge;
        for (i=0;i<laenge;++i) {
            for (j=0;j<laenge-i-1;++j) {
     	    if (array[j]>array[j+1]) {
     	        int tmp = array[j];
     		array[j] = array[j+1];
     		array[j+1] = tmp;
                }
            }
        }
    }
    
    int laenge;    //Anzahl der Datensätze, die in numArray gespeichert werden
    int numArray[100];
    
    int main (void)
    {
    
        laenge=10;    //zum Beispiel, wird eigendlich durch eine weitere Funktion ermittelt
    
        numArray2 = (int) malloc(laenge*sizeof(int));   //Zweites Array der Länge "laenge" erstellen
        for(i=0;i<laenge;i++){                         //und dynamisch mit dem ersten bespeichern
            numArray2[i]=numArray[i];
        }
    

    Mir geht es jetzt hauptsächlich um den Teil, in dem das Zweite Array erzeugt werden soll, hier bekomme ich den besagten Fehler, dass numArray2 nicht deklariert wurde.


  • Mod

    Es wurde ja auch nirgends deklariert!

    int *numArray2 = (int*) malloc(laenge*sizeof(int));
    


  • Der Fehler in der Zeile

    numArray2[i]=numArray[i];
    

    wird jetzt durch die Meldung:
    "error: subscripted value is neither array nor pointer" ersetzt, wobei numArray eindeutig ein funktionierendes Array ist, es muss also an numArray2 liegen.



  • Habe es schon selbst gelöst, nochmal Danke an alle die mir geholfen haben!


Anmelden zum Antworten