c - Karmann Ghia IG Südheide

Direkt zum Seiteninhalt

Hauptmenü:

c

Übungsblatt A
Diese Aufgabe wird bewertet, es können bis zu 4,0 Bonuspunkte erreicht werden. Die Bearbeitung
in Kleingruppen (2 Personen der gleichen Übungsgruppe) ist zulässig. Ihre Lösung führen Sie der
Übungsgruppenbetreuung  während  Ihrer  regulären  Übung  in  der  letzten  Woche  vor  Weihnachten
(vom 17.12.2018 bis zum 20.12.2018) vor.
Weihnachtsvorbereitungen
Um auch in diesem Jahr zu Weihnachten wieder zuverlässig alle Geschenke rechtzeitig ausliefern zu
können, benötigt der Weihnachtsmann Ihre Unterstützung. Die Erfahrungen der letzten Jahre haben
gezeigt, dass der Schlitten des Weihnachtsmanns möglichst schnell fahren kann, wenn die Rentie-
re, die den Schlitten ziehen, nach ihrer Größe sortiert aufgestellt werden. Die Größe eines Rentiers
bestimmen wir über die Anzahl der Enden an seinem Geweih. Ein Rentiergeweih hat mindestens 2
und höchstens 30 Enden, die Anzahl ist immer gerade. Da die Rentiere den Rest des Jahres über frei
haben, können sie sich in Ihrem großzügigen Gehege nach Belieben bewegen. Ungefähr einen Monat
vor Weihnachten wählt der Weihnachtsmann zufällig 12 Rentiere aus dem Gehege aus und sortiert sie
anhand des folgenden Algorithmus:
Zu Beginn stehen die Rentiere in einer von links nach rechts verlaufenden Reihe
Vor dem Rentier ganz links steht der Weihnachtsmann und möchte die Rentiere von links nach
rechts der Größe nach aufsteigend sortieren
Dazu vergleicht er das Rentier, vor dem er gerade steht, mit dem eine Position weiter rechts
Stellt er fest, dass sie in der richtigen Reihenfolge sind, so macht er einen Schritt nach rechts
Stellt er hingegen fest, dass die Reihenfolge nicht stimmt, so vertauscht er die beiden Rentiere
und macht einen Schritt nach links
Der Weihnachtsmann ist fertig, wenn er ganz rechts angekommen ist und feststellt, dass die
beiden letzten Rentiere in der richtigen Reihenfolge stehen
Aufgabe:
Schreiben Sie ein vollständiges C-Progamm, das Rentiere nach ihrer Größe sortiert. Ge-
ben Sie nach jedem Schritt des Weihnachtsmanns seine aktuelle Position sowie die Reihenfolge der
Rentiere aus. Geben Sie zum Schluss aus, wie viele Schritte der Weihnachtsmann gemacht hat.
Tipps
Initialisieren Sie ein Array mit einer zufälligen Zahlenreihe, um die Rentiere zu modellieren
Definieren Sie eine Indexvariable, die den Standort des Weihnachtsmanns repräsentiert
Überlegen Sie sich eine geeignete Abbruchbedingung
Führen Sie den Algorithmus aus




#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void printViecher(int Viecher[], int ViecherAmount) {
   int run;

               printf("[");
   for (run = 0; run < ViecherAmount; run++) {
                   printf("%i", Viecher[run]);
       if( run < (ViecherAmount - 1)) {
           printf(",");
       }
       }

       printf("]");
}

           int main()
{
               int run, position, Viecher[12];

   srand(time(0));
   for (run = 0; run < 12; run++) {

       int randomnumber = (rand() % 29);
       Viecher[run] = (2 + randomnumber);
   }

   position = 0;
   printViecher(Viecher, sizeof(Viecher) / sizeof(int));
   printf(", %i\n", position);

   while(position < 12)
   {
       int left, right;
       left = position;
       right = (position + 1);

                   if(Viecher[left] > Viecher[right])
       {
           int tempViecher = Viecher[left];
                       Viecher[left] = Viecher[right];
                                               Viecher[right] = tempViecher;

           if(position > 0)
                                                           {
               position--;
           }
       } else {
           position++;
       }

       printViecher(Viecher, sizeof(Viecher) / sizeof(int));
                                               printf(", %i\n", position);
   }

   return 0;
}

Zurück zum Seiteninhalt | Zurück zum Hauptmenü