[C++] Zahlen sortieren mit if-else Verknüpfungen

meph!sto

Urgestein
Thread Starter
Mitglied seit
13.05.2008
Beiträge
2.479
Ort
MZ
Hi,
ich lerne gerade im Studium C++ und wir haben die Aufgabe bekommen,
3 eingelesene Zahlen einmal aufsteigend und einmal absteigend zu sortieren.

Ich habe da aber übele Probleme meine Gedanken in die richtige Syntax zu bringen.

Code:
	cout<<" Bitte erste Zahl eingeben\t"; //eingabe der ersten zahl
		cin>>a;
		cout<<" Bitte zweite Zahl eingeben\t"; //eingabe der zweiten zahl
		cin>>b;
		cout<<" Bitte dritte Zahl eingeben\t"; //eingabe der dritten zahl
		cin>>c;

		if (c<b)
		{
			zahl2=c;
			zahl3=b	
			else
				{
					zahl3=c;
					zahl2=b;
					{
						if (c<a)
						{
							zahl1=c;
							zahl2=a;
							else
							{
								zahl2=c;
							}
								if (a<b)
								{
									zahl1=a;
									zahl2=b;
								else
									zahl2=a;
									zahl1=b;
								}
						}
					}
		}

Er soll also erstmal c mit b vergleichen und wenn c kleiner ist als b, dann soll die Variable "zahl2" den Wert von c erhalten und die Variable "zahl3" den Wert von b, wenn nicht dann soll halt zahl2=b und zahl3=c sein.
Im nächsten Schritt soll der Wert, der unter "zahl2" gespeichert ist, mit a verglichen werden.

Ich weiß aber ehrlich gesagt, nicht mal ob meine Gedanken irgendwie richtig sind.
Kann mir bitte einer helfen, danke!

P.S: Bitte verständlich erklären, programmieren ist überhaupt nicht meine Stärke.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hi,

also ich bin jetzt in C++ nicht so fit, aber prinzipiell würde ich es wie folgt lösen:
Code:
//Ordne die Zahlen a,b,c so dass zahl1 die kleinste und zahl3 die größte ist
if (c>b)
{
   zahl2=b;
   zahl3=c;      // zahl2 ist jetzt kleiner als zahl3
} else
{
   zahl2=c;
   zahl3=b;
}

// Nun muss a einsortiert werden
if (a<zahl2)     // a ist die kleinste zahl
{
   zahl1=a;    //wir sind fertig
} else 
{
   if (a>zahl3) // a ist die größte zahl
   {
      zahl1=zahl2;
      zahl2=zahl3;
      zahl3=a;
   } else   // a liegt zwischen zahl2 und zahl3
   {
      zahl1=zahl2;
      zahl2=a;
   }
}

Vielleicht hilft dir das ja weiter

Edit: Ein zwei Fehler waren noch drin... Hoffe ich hab jetzt alle gefunden
 
Zuletzt bearbeitet:
Auch wenns nur 3 Zahlen sind, würde ich hier den BubbleSort-Algo nehmen. Sind auf jeden Fall weniger Zeilen Code und IMHO auch um einiges verständlicher. Gibts sicherlich auch für C bei google schon fertig verpackt.
 
Jo,
einen fertigen Algorithmus würde ich auch gerne nehmen, nur sollen wir das eben mit if-else Verschachtelungen lösen.
 
Code:
int swap=0,a=2,b=3,c=4;

if(a>b)
{
swap = a;
a=b;
b=swap;
}

if(b>c)
{
swap = b;
b=c;
c=swap;
}

if(a>b)
{
swap=a;
a=b;
b=swap;
}

würde aber auch Bubblesort empfehlen,
das sind genau 2 for-schleifen (und eine if)
Und du kannst dann beliebig viele zahlen sortieren...

Code:
int[] zahlen = new int[10];
zahlen[0]=1;zahlen[1]=..........;
int swap=0;
for(int i=0;i<sizeof(zahlen)-1;i++)
{
  for(int k=0;k<sizeof(zahlen)-1-i;k++)
  {
    if(zahlen[k]>zahlen[k+1])
    {
      swap=zahlen[k];
      zahlen[k]=zahlen[k+1];
      zahlen[k+1]=swap;
    }
  }
}

mfg
aelo
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh