Bubblesort



  • ja nur hätte ich gerne hilfe



  • So müsste es ungefähr aussehn..

    #include <stdio.h>
    #define ZAHL 10
    
    //Prototyp der Funktion 
    void bubble (int Feld [ZAHL], int laenge);
    
    int main (void) {
    float Feld[ZAHL];
    int i;
    int temp;
    int laenge;
    
    printf("Geben Sie hier ihre Zahlen ein:\n");
    for ( i = 0; i < ZAHL; i++ )
    { printf("Zahl Nr.%d:",i+1);
    scanf ("%f", &Feld[i]);
    
    }
    
    //bubblesort funktion aufrufen
    bubble (int Feld,ZAHL);
    
    for ( i = 0; i < ZAHL; i++ )
    {
    printf("Ihre Zahlen Nr.%d: %.0f\n", i+1, Feld[i]);
    }
    
    system ("Pause");
    return 0;
    
    }
    
    void bubble (int Feld [ZAHL], int laenge) {
    int i, j;
    
    for (i = 1; i < laenge; i++)
    /* größte Element nach oben bring0rn */
    for (j = laenge-1; j >= i; j--)
    if (Feld[j] < Feld[j-1]) {
    int temp = Feld[j];
    Feld[j] = Feld[j-1];
    Feld[j-1] = temp;
    }
    }
    


  • hm thx=)

    hab grad gesehen das Feld Float ist und in der bubble funktion int hab da rum probiert aber jetzt gibt er 000000000000 raus Oo



  • ja dann mach überals wo "int" steht "float" draus...



  • yo hab ich ka hab jetzt noch was anderes probiert

    void bubblesort( int Feld[ZAHL]){
    int i, fertig = 0;
    int h;
    int len;
    len = strlen(Feld);
    while (!fertig){ /* Durchgang beginnen*/
    fertig = 1;
    for (i=0; i < len-1; i++)
    if (Feld[i] > Feld[i+1]){ /* Vertauschen nötig /
    fertig =0; /
    Weiterer Durchgang nötig /
    h = Feld[i]; /
    Austauschen /
    Feld[i] = Feld[i+1];
    Feld[i+1] = h;
    }
    }
    }
    ich denke der Fehler liegt darin, das irgendwo der "missing link" zwischen meinem Programm /
    Enlesen + Ausgeben */ und dem Bubblesort liegt, also der Bubblesort mit dem vorhergehenden Code nichts anfangen kann



  • en = strlen(Feld); ????
    

    strlen erwartet die länge eines strings (char feld) nicht einen Int felds. Du musst definitf die größe des feldes mit in die funktion übergeben.



  • bin zwar auch ein noob in c, aber ich glaube nicht, dass man ein int array mit strlen behandeln kann.

    size_t strlen ( const [b]char[/b] * str );
    


  • Dunno schrieb:

    void bubblesort( int Feld[ZAHL]){ 
     ...
     int len; 
     len = strlen(Feld); 
     ...
    }
    

    "len" ist schon bekannt.



  • hallo ihr lieben leute, so hab mich jetzt nochmal mit dem ganzen auseinander gesetzt und mir noch was dazu geschrieben:
    einziges Problem, er sagt in der Zeile vom Bubblesort: syntax error before numeric constant, hab jetzt mehrmals rumgegoogelt und scheint ein Problem mit dem define zu sein, weiß jemand rat?

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define ZAHL 10
    int main () {
    float Feld [ZAHL];
    int i;
    /* Eingabe , das erste printf bezieht sich auf das scanf, dass 2 printf auf das for,
    dann sollte es so aussehen: Geben sie ihre Zahlen ein:
    Ihre ZahlNr.1.: ...
    Ihre ZahlNr.2.: ... etc. */

    printf("Geben sie ihre Zahlen ein:\n");
    for (i = 0; i < ZAHL; i++ )
    { printf("Ihre Zahl Nr. %d:", i+1 );
    scanf ("%f", &Feld[i]);
    }
    /Ausgabe , wieder for, printf in Klammern einmal mit den int Zahlen für i und
    einmal mit dem Feld für die eingegebenen Werte

    Ausgabe wie oben, nur mit dem eingegebenem Wert */

    for ( i = 0; i < ZAHL; i++ )
    { printf("Ihre Zahl Nr. %d: %.0f\n", i+1, Feld[i]);
    }

    void bubblesort (int Feld [i]; ZAHL ) {
    int i,j;
    for ( j = 0; j < ZAHL; j++)
    for ( i = ZAHL - 1; i >= i; i-- )
    if (Feld[i] < Feld[i-1])
    { int temp = Feld[i];
    Feld[i] = Feld[i-1];
    Feld[i-1] = temp;
    }
    }

    system ("Pause");
    return 0;

    }



  • du brauchst ZAHL nicht übergeben, das du dies global definiert hast. und bei dem Array das "i" weg.

    //Aufruf
    bubblesort(Feld);
    
    //funktion
    void bubblesort (int Feld[]) {
    int i,j;
    for ( j = 0; j < ZAHL; j++)
    for ( i = ZAHL - 1; i >= i; i-- )
    if (Feld[i] < Feld[i-1])
    { int temp = Feld[i];
    Feld[i] = Feld[i-1];
    Feld[i-1] = temp;
    }
    }
    
    system ("Pause");
    return 0;
    
    }
    


  • Bitte auch man: indent lesen.



  • bgdnoy schrieb:

    Bitte auch man: indent lesen.

    du meinst wohl 'anwenden'.
    🙂



  • fricky schrieb:

    du meinst wohl 'anwenden'.

    Das wäre dann der zweite Schritt.
    Zuerst den ersten Schritt, hab ich gedacht, damit sie nicht hinfallen...
    🙂


Log in to reply