Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, ich muss ein Programm schrieben in C und kommen nicht mehr weiter.

Es soll ein Bubble sort mit zufallszahlen sein. Die zufallszahlen bekomme ich hin, aber es wird dann nichts sortiert.

ich denke mal das ich in der do while schleife einen fehler habe.

hier noch mein bisheriges programm

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define Anzahl 10

#define true (1)

#define false (0)


int main(){

    int i, x[Anzahl], temp, getauscht; 


    srand(time(NULL)); // Zufallsgenerator auf zufälligen Startwert setzen

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

        x[i] = rand()%10; // Zufallszahl zwischen 0 und 99 eintragen

        printf(" %3d ",x[i]);

        printf("\n\n");

    }


     do{getauscht=0;

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

           if (x[i] > x[i+1]) {

                        temp=x[i];

                        x[i]=x[i+1];

                        x[i+1]=temp;

                        getauscht=1;


           }

           printf(" %3d ", temp);

       }


       printf("\n");

     }

    while(getauscht=0);




    system("pause");

    return 0;

}

überhilfe bin ich sehr dankbar

Geschrieben
richtig?
Ja.

Ein weiterer Fehler ist, dass deine for-Schleife zu weit läuft. Der letzte erlaubte Index des Arrays x ist Anzahl-1. Deine Schleifenvariable i läuft bis (einschließlich) Anzahl, und da du mit i+1 auf das Array zugreifst, ist das um 2 zu hoch.

Geschrieben

okay, das klingt logisch, habe es jetzt geändert

das "programm" läuft jetzt schon weiter als sonst, aber sortiert nicht alle zahlen bis zum ende durch

das kommt zB wenn ich das programm starte

  0    0    7    7    6    2    5    3    0    1


  2011860181    0    0    7    6    2    5    3    0    1

   7    0    0    6    2    5    3    0    1    7

   7    0    0    2    5    3    0    1    6    7

   6    0    0    2    3    0    1    5    6    7

   5    0    0    2    0    1    3    5    6    7

   3    0    0    0    1    2    3    5    6    7

   2    0    0    0    1    2    3    5    6    7

Drücken Sie eine beliebige Taste . . .

warum steht dort eig so eine lange zahl?

Geschrieben
warum steht dort eig so eine lange zahl?
Du gibst ja immer nur temp aus, deine Tauschvariable. Und falls beim ersten Vergleich nicht getauscht wird, weil die ersten beiden Zahlen in der richtigen Reihenfolge sind, wird temp ausgegeben, ohne dass dieser Variable jemals etwas zugewiesen wurde. Was dann da drin steht, ist mehr oder weniger zufällig.
Geschrieben

achso, ist mir gar nicht aufgefallen habe das verändert und jetzt geht es auch

danke für deine hilfe

jetzt hab ich noch ein weiteres problem

ich soll jetzt ein weiteres programm schreiben wo die zufallszahlen nicht sortiert werden, sondern es soll ein zweites array erstellt werden wo die positionen der zahlen drin stehen. dieses array soll sortiert werden und dann mit hilfe des sortierten array sollen die zufallszahlen ausgegeben werden.

hast du ne ahnung wie ich damit anfagen könnte?

Geschrieben (bearbeitet)

Das heißt, wenn wir eine Schleife haben, die alle Elemente von keys der Reihe nach durchläuft, haben wir bei keys, die Ausgabe 4,3,2,1,0, right?

Und diese Werte wiederum in values eingesetzt, ergeben ...? Preisfrage *G*

values[4]= ___

values[3]= ___

values[2]= ___

values[1]= ___

values[0]= ___

Edit: Keys muss natürlich die Zahlen von 0 - 4 beinhalten, damit es funktioniert ... Sorry :/

Bearbeitet von lilith2k3

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...