Zahlen sortieren
-
Ich bräuchte ein Programm, dass meine eingegeben Zahlen der größe nach ausgibt.
Leider haben meine Anfangsversuche nicht funktioniert.
Hier mal 2 kurze Beispiele:void main() { int zahl1, zahl2, zahl3, zahl4, zahl5; printf("Dieses Programm sortiert die von ihnen Eingegebenen Zahlen der größe nach.\n\n"); printf("Bitte geben sie die erste Zahl ein.\n\n"); scanf("%d", &zahl1); printf("\nBitte geben sie die zweite Zahl ein.\n\n"); scanf("%d", &zahl2); if(zahl1>zahl2) { printf("\nDie 1.Zahl ist %d\n", zahl1); printf("Die 2.Zahl ist %d\n", zahl2); } else{ printf("\nDie 1.Zahl ist %d\n", zahl2); printf("Die 2.Zahl ist %d\n", zahl1); } printf("\nBitte geben sie die dritte Zahl ein.\n\n"); scanf("%d",&zahl3); if(zahl1>zahl2) { if(zahl2>zahl3) { printf("\nDie 1.Zahl ist %d.\n",zahl1); printf("Die 2.Zahl ist %d.\n",zahl2); printf("Die 3.Zahl ist %d.\n",zahl3); } else{ printf("\nDie 1.Zahl ist %d.\n",zahl1); printf("Die 2.Zahl ist %d.\n",zahl3); printf("Die 3.Zahl ist %d.\n",zahl2); } } else{ if(zahl1>zahl3) { printf("\nDie 1.Zahl ist %d.\n",zahl2); printf("Die 2.Zahl ist %d.\n",zahl1); printf("Die 3.Zahl ist %d.\n",zahl3); } else{ printf("\nDie 1.Zahl ist %d.\n",zahl2); printf("Die 2.Zahl ist %d.\n",zahl3); printf("Die 3.Zahl ist %d.\n",zahl1); } } if(zahl2>zahl3) { if(zahl3>zahl1) { printf("Die 1.Zahl ist %d.\n",zahl2); printf("Die 2.Zahl ist %d.\n",zahl3); printf("Die 3.Zahl ist %d.\n",zahl1); } else{ printf("Die 1.Zahl ist %d.\n",zahl2); printf("Die 2.Zahl ist %d.\n",zahl1); printf("Die 3.Zahl ist %d.\n",zahl3); } } else{ if(zahl1>zahl2) { printf("Die 1.Zahl ist %d.\n",zahl3); printf("Die 2.Zahl ist %d.\n",zahl1); printf("Die 3.Zahl ist %d.\n",zahl2); } } printf("Bitte geben sie die vierte Zahl ein.\n"); scanf("%d",&zahl4); printf("Bitte geben sie die fünfte Zahl ein.\n"); scanf("%d",&zahl5); }
-----------------------------------------------------------------------------
Ist noch nicht fertig, war ja auch nur ein Anfang bis ich gemerkt hab,dass es nicht stimmt.
-----------------------------------------------------------------------------void main() { int zahl1, zahl2, zahl3, zahl4, zahl5; printf("Dieses Programm sortiert die von ihnen Eingegebenen Zahlen der größe nach.\n"); printf("Bitte geben sie die erste Zahl ein.\n"); scanf("%d", &zahl1); printf("Bitte geben sie die zweite Zahl ein.\n"); scanf("%d", &zahl2); if(zahl1>zahl2) { printf("Die 1.Zahl ist %d\n", zahl2); printf("Die 2.Zahl ist %d\n", zahl1); } else{ printf("Die 1.Zahl ist %d\n", zahl1); printf("Die 2.Zahl ist %d\n", zahl2); } printf("Bitte geben sie die dritte Zahl ein.\n"); scanf("%d",&zahl3); if(zahl1>zahl2>zahl3) { printf("Die 1.Zahl ist %d.\n",zahl1); printf("Die 2.Zahl ist %d.\n",zahl2); printf("Die 3.Zahl ist %d.\n",zahl3); } else if(zahl1>zahl3>zahl2) { printf("Die 1.Zahl ist %d.\n",zahl1); printf("Die 2.Zahl ist %d.\n",zahl3); printf("Die 3.Zahl ist %d.\n",zahl2); } else if(zahl2>zahl3>zahl1) { printf("Die 1.Zahl ist %d.\n",zahl2); printf("Die 2.Zahl ist %d.\n",zahl3); printf("Die 3.Zahl ist %d.\n",zahl1); } else if(zahl2>zahl1>zahl3) { printf("Die 1.Zahl ist %d.\n",zahl2); printf("Die 2.Zahl ist %d.\n",zahl1); printf("Die 3.Zahl ist %d.\n",zahl3); } else if(zahl3>zahl2>zahl1) { printf("Die 1.Zahl ist %d.\n",zahl3); printf("Die 2.Zahl ist %d.\n",zahl2); printf("Die 3.Zahl ist %d.\n",zahl1); } else { printf("Die 1.Zahl ist %d.\n",zahl3); printf("Die 2.Zahl ist %d.\n",zahl1); printf("Die 3.Zahl ist %d.\n",zahl2); } printf("Bitte geben sie die vierte Zahl ein.\n"); scanf("%d",&zahl4); printf("Bitte geben sie die fünfte Zahl ein.\n"); scanf("%d",&zahl5); }
-----------------------------------------------------------------------------
Das wurde auch nicht fertig, wegen dem selbigen Grund wie beim ersten Versuch.
-----------------------------------------------------------------------------Ich bin mir sicher,dass kann man auch vereinfachen,aber hab leider noch wenig erfahrung und weiß daher nicht wie man das macht.
-
*edit für unregistrierte*
Aber bitte keine allzu komplizierten Dinge, sonst werde ich verwirrter als ich ohnehin schon bin!
Da hätte ich aber noch eine Frage, kann man dieses ewige if else, und scanf nicht mit einer schleife lösen?
aber, da kommt wiedr das problem mit den variablen in der schleife die ja immer gleich bleiben!
-
1. falsches Forum
KMilo schrieb:
Da hätte ich aber noch eine Frage, kann man dieses ewige if else, und scanf nicht mit einer schleife lösen?
2. Klar kann man das mit einer Schleife lösen. Da gibt es viele Verfahren für. Schau mal hier.
-
1.Vielleicht könnte ein mod das ins richtige Forum verschieben?
2.Ich versteh dein antwort nicht ganz
-
KaMilo schrieb:
2.Ich versteh dein antwort nicht ganz
Was gibt es an meiner Antwort nicht zu verstehen?
Du hast gefragt ob man das ganze nicht mit einer Schleife lösen kann. Darauf hab ich geantwortet: Ja. Und dann hab ich dir noch einen Link zu Sortierverfahren gegeben.
-
ich weiß nicht wie ich das in mein programm einfüge!
es würde sich ja von grund auf ändern, und ich weiß nicht wie ich das einsetze!
-
C++ Lösung (STL statt MFC)
#include <algorithm> #include <set> #include <iostream> using namespace std; void DoSomething(int i) { cout << i << endl; } int main(int argc, char* argv[]) { int zahl1, zahl2, zahl3, zahl4, zahl5; ... // Lösung A set<int> iset; iset.insert(zahl1); iset.insert(zahl2); iset.insert(zahl3); iset.insert(zahl4); iset.insert(zahl5); for_each(iset.begin(), iset.end(), DoSomething); cout << "********************" << endl; // Lösung B vector<int> ivec; ivec.push_back(zahl1); ivec.push_back(zahl2); ivec.push_back(zahl3); ivec.push_back(zahl4); ivec.push_back(zahl5); sort(ivec.begin(), ivec.end()); for_each(ivec.begin(), ivec.end(), DoSomething); cout << "********************" << endl; return 0; }
A) Schreibst du die Zahlen in ein Set so wird dieses immer sortiert gehalten.
Verwendest du einen Vektor musst du ihn explizit sortieren.
-
Wow,danke redhet.
das war kurz und einfach. sehr gut!..
da bräuchte ich aber nochmals kurz hilfe.
nach jeder eingabe sollen die bereits eingegebenen zahlen ausgegeben werden.
wie würde das gehn?
-
In diesem Fall wäre wohl die Variante mit dem Set zu bevorzugen damit du nicht
n-mal sortieren musst.Zu deinem Problem, jede Zahl direkt in das Set einfügen und anschliessend
gemäss Beispiel jedesmal ausgeben, voila.