Was gibt dieses C-Programm aus?



  • infooo schrieb:

    Sortieren??? ja aber wie genau???

    Was weißt du bis jetzt über Bubblesort?

    Benutze den Debugger.



  • Ja ist schon klar mit devc++ habe ich die ausgabe aber weiß nicht wie ich ohne pc es hinbekommen soll?
    Ich möchte den Algorithmus dahinter ohne PC verstehen und selbst rausbekommen d.h. ohne Programm.



  • infooo schrieb:

    Ich möchte den Algorithmus dahinter ohne PC verstehen und selbst rausbekommen d.h. ohne Programm.

    Zettel und Bleistift und dann Schritt für Schritt das Programm durchgehen und die Daten/Variablen notieren.

    ⚠ Schritt für Schritt und nichts überspringen.



  • Hier mal ein Ansatz und manchmal ist es auch hilfreich mal den Code in eine verstndlichere Form zu bringen (Einrückungen usw.)

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int x[5]; // deklariert ein array mit 5 werten
        int i, key, j, m; // deklariert die integer variablen i, key, j und m
        x[0] = 9; x[1] = 2; x[2] = 5; x[3] = 8; x[4] = 3; // füllt das array mit werten
        for(i = 1; i <= 4; i++) // zählt von 1 bis 4 und weist den wert dem integer i zu
        {
            key = x[i]; // kopiert den aktuellen wert von array x[stelle i] in den integer key
            j = i - 1; // initialisiert den integer j mit dem wert aus integer i minus 1 
            while(key < x[j] && j >= 0)
            {
                x[j + 1] = x[j];
                j = j - 1;
            }
            x[j + 1] = key;
            for(m = 0; m <= 4; m++)
            {
                printf("%d", x[m]);
            }
            printf("\n");
        }
        system("PAUSE");
        return 0;
    }
    


  • Videonauth schrieb:

    Sehr aussagekräftige Kommentare

    Nicht.



  • DirkB schrieb:

    Videonauth schrieb:

    Sehr aussagekräftige Kommentare

    Nicht.

    Das sol ein Ansatz sein und keine Komplettlösung, das ist nicht meine Aufgabe. Von daher finde ich deine Aussage fehl am Platz.



  • ok danke für die hilfreichen antworten...

    was mach bitte die 2. for-schliefe genau wennn da

    printf("%d", x[m]);
    

    das prog gibt da nur einen wert aus nähmlicht was m ist aber wie kommen die ganzen zahlen hintereinander.

    x[1]= 2;
    dann die erste ausgabe ist
    29583
    25983 hier rückt die 9 nach rechts wie nimmt das programm die ganzen zahlen mit und verschiebt die 9 nach rechts



  • Die zweite for Schleife gibt das ganze Array aus und danach folgt ein new line.
    Das mitnehmen bzw. umschieben der Zahlen finded in der while Schleife statt.



  • Die 2. For-Schleif gibt das Array aus. Daran kannst du den Fortschritt der Sortierung sehen.
    Bei printf("%d", x[m]); wird das Element m vom Array x ausgegeben (als dezimale Zahl)

    Das verschieben macht die while-Schleife.
    Sie merkt sich den ersten Wert in key. Dann wird verschoben, und key an die freie Stelle geschrieben (ist sowas wie Dreieckstausch).



  • vielen dank für die hilfreichen tippssssssssss
    so viel info reicht dankeeeeeeeeeeeeeeeeeeeeee


Anmelden zum Antworten