aufgabe

pichichi001

Grünschnabel
ich wurde gern wissen ob mir eine helfen können danke.
1. Schreiben Sie ein Programm, das 10 Integer-Zahlen in ein Feld einliest und es in
aufsteigender Reihenfolge sortiert. Geben Sie danach das sortierte Feld mit der
groten Zahl beginnend aus. Durchlaufen Sie dazu das Feld immer wieder und
vertauschen, wenn notig, benachbarte Elemente. Ist in einem Durchlauf kein Austausch
mehr erforderlich, ist das Feld sortiert.
2. Mit der Funktion rand() konnen Sie Zufallszahlen zwischen 0 to 32767 erzeugen.
Fullen Sie ein Feld mit 100 zufalligen Werten und lassen es sortieren. Geben Sie
das sortierte Feld sowie die Anzahl der Durchlaufe, die fur den Algorithmus notig
waren, aus.
 
Hi

können wir schon, aber so hilft dir das nicht (du sollst es ja lernen, geht nicht mit Kopieren einer fertigen Lösung)
Hast du einen Versuch, bei dem du nicht weiter kommst (und warum etc.)?
 
Zuletzt bearbeitet:
int X[10], i = 0;
for (i = 0; i < 10; i = i + 1){

cout << " Anzahl ist " << i << " = ";
cin >> X;
das habe bis jetzt geschrieben ich will jetzt wissen wie ich die zahlen vergleichen kann
 
Ein möglicher Ansatz:
Code:
if(X[i] < X[i + 1]) //wenn X[i] kleiner als X[i + 1] dann die Positionen der beiden tauschen
{
  int temp = X[i];
  X[i] = X[i + 1];
  X[i + 1] = temp;

  sortierZaehler++;
}

Als zähler, für die Anzahl wie oft sortiert wurde, brauchst du eine weitere int variable.
Welche du jedesmal hochzählst wenn du Felder gedreht hast. (Im obigen Beispiel sortierZaehler)
 
Mein Tipp zum lernen: Schreibe dir am Anfang zusammen was du machen musst, und dann schrittweise wie du das erreichst, und werde immer konkreter und konkreter (Immer mehr "Programmcode").
zum Beispiel 1.:
Am Anfang brauchst du ein Integer Array und einen Boolean der "überwacht" ob ein Tausch nötig war. Dann benötigst du eine Schleife die alle Array-Elemente durchläuft, EIN Durchlauf ist auf alle Fälle notwendig (sonst kann nichts geprüft werden),dann muss geprüft und eventuell getauscht werden. Wurde getauscht-> neuer Durchlauf.

C++:
int X[10]; //Das Array
bool durchlaufIstNotwendig=false; //Der Schalter

do
{
durchlaufistNotwendig=false; //Reset des Schalters
for(int i=0;i<9;i++) //Array hat 10 Elemente, alle bis auf das letzte werden durchlaufen (dieses hat ja keinen Nachfolger)
{
  if(X[i] < X[i + 1]) //wenn X[i] kleiner als X[i + 1] dann die Positionen der beiden tauschen
  {
   int temp = X[i]; //hier kommt ein Dreieckstausch
   X[i] = X[i + 1];
   X[i + 1] = temp;
   durchlaufIstNotwendig=true; //Tausch war notwenig also nochmal prüfen
  }
}
}
while(durchlaufIstNotwendig);
 

Neue Beiträge

Zurück