Sortieren Array



  • Hallo leute ich bin im moment wieder beim üben von informatik und brauche paar tips von euch:

    1. Erstellen Sie einen Testplan für ein Programm (bzw. Funktion), zur Lösung folgender Aufgabe :
      Es sind mehrere Zahlen einzulesen und sortiert auszugeben ( nicht nur 3 wie in Teil 2).
      Die Anzahl der Zahlen wird vom Anwender vorgegeben.
      Fehlerhafte Eingaben müssen nicht geplant werden.
    2. Es ist ein Programm zu erstellen, in welchem genau drei Zahlen in drei Variable (z.B. a,b,c)
      eingelesen werden. Diese drei Werte sollen so in drei neue Variable (z.B. x,y,z) umgespeichert
      werden, dass diese sortiert sind. Für die neuen Variablem muss also gelten: x<=y<=z .
      Danach sind diese drei Zahlen sortiert auszugeben.
      Dieses Programm ist damit ein Spezialfall der Aufgabe aus 1).
      Achten Sie in dem Programm auf
      ausreichend Kommentare
      einrücken bei den Abfragen
      gefällige Ausgabe unter Verwendung von Manipulatoren.

    Ich versuche gerade die eingelesen Dateien zu vertauschen aber ich bin mir nicht sicher ob mein Tauschalgorithmus so richtig die eingelesenen Variablen tauscht .

    Für tipps wäre ich dankbar.

    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
    	int n;
    	int zahl[5];
    	cout<<" Anzahl der einzulesenden Elemente ";
    	cin>>n;
    	if ( n>5 )//Plausibilitaetskontrolle
    	{
    
    		cout << "Es sind nicht mehr elemente verfügbar" << endl;
    
    	}
    	cout<<" Elemente eingeben ";
    	for (int i=0;i<n;i++)//Eingabe der Arrayelemente
    	cin>>zahl[i];
    
    	int swapUmkehrer = -1;
    
    	for(int index = 0; index< 5 ; index ++)
    	{
    
    		if(zahl[index] > zahl[index+1])
    		{
    			swapUmkehrer = zahl[index+1];
    			zahl[index+1] = zahl[index];
    			zahl[index]   = swapUmkehrer;
    
    		}
    
    	}
    
    	for(int index = 0;index< 5 ; index ++) {
    
    		cout << zahl[index] << " Bye " << endl;
    	}
    
    	}
    
    	return 0;
    }
    

    Leider muss ich euch fragen , weil ich im moment einfach noch nicht die erfahrung habe das alleine zu bewerkstelligen .


  • Mod

    Kommt denn das richtige raus? Wahrscheinlich nicht. Aber demnächst wäre es gut, wenn du uns sagen würdest, welche Art von Problem du genau hast, anstatt uns einfach nur die Aufgabenstellung und den Code hin zu klatschen und zu fragen was wohl falsch ist.

    Wie auch immer: Wie viele Werte wurden eingegeben? Wie viele Werte sortierst du? (Oder eher: Wie viele Werte versuchst du zu sortieren? Denn so wirklich richtig ist das noch nicht. Aber eines nach dem anderen.)



  • Ich will 5 werte sortieren ( versuche zu sortieren ) .

    Eingeben tu ich ja 5 werte .

    Ich hab noch ein wenig an meinem code gearbeitet und das stehen.

    Für tipps wäre ich dankbar.

    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
    	int n;
    	int zahl[5];
    	cout<<" Anzahl der einzulesenden Elemente ";
    	cin>>n;
    	if ( n>5 )//Plausibilitaetskontrolle
    	{
    
    		cout << "Es sind nicht mehr elemente verfügbar" << endl;
    
    	}
    	cout<<" Elemente eingeben ";
    	for (int i=0;i<n;i++)//Eingabe der Arrayelemente
    	cin>>zahl[i];
    
    	int swapUmkehrer = -1;
    	int end = 5;
    	int length = 5;
    
    	for(int counter = length-1; counter > 0; counter--){
    
    	for(int index = 0; index< end ; index ++)
    	{
    
    		if(zahl[index] > zahl[index+1])
    		{
    			swapUmkehrer = zahl[index+1];
    			zahl[index+1] = zahl[index];
    			zahl[index]   = swapUmkehrer;
    
    		}
    
    	}
    	end--;
    
    	}
    
    	for(int index = 0;index< 5 ; index ++) {
    
    		cout << zahl[index] << " Bye " << endl;
    	}
    
    	}
    
    	return 0;
    }
    

  • Mod

    Wozu stellst du überhaupt Fragen, wenn du weder über die Antworten nachdenkst, noch die Hinweise befolgst, die man dir gibt? Denkst du, irgendjemand wird dir einfach so aus Langeweile deine Hausaufgaben machen, wenn du nur oft genug fragst?
    👎



  • Das sind keine HA .

    Die musterlösung habe ich schon .

    Ich versuche nur selber darauf zu kommen.



  • #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
    	int n;
    	int zahl[5];
    
    	cout << " Anzahl der einzulesenden Elemente ";
    	cin >> n;
    
    	if ( n>5 )//Plausibilitaetskontrolle
    	{
    		cout << "Es sind nicht mehr elemente verfügbar" << endl;
    	}
    
    	cout << " Elemente eingeben ";
    
    	for (int i = 0; i < n; i++)//Eingabe der Arrayelemente
    		cin >> zahl[i];
    
    	int swapUmkehrer = -1;
    	int end = 5;
    	int length = 5;
    
    	for(int counter = length-1; counter > 0; counter--)
    	{
    		for(int index = 0; index < end ; index ++)
    		{
    			if(zahl[index] > zahl[index+1])
    			{
    				swapUmkehrer = zahl[index+1];
    				zahl[index+1] = zahl[index];
    				zahl[index]   = swapUmkehrer;
    			}
    		}
    		end--;
    	}
    
    	for(int index = 0; index < 5; index ++)
    	{
    		cout << zahl[index] << " Bye " << endl;
    	}
    
    	return 0;
    }
    

    Ich habs mal in schön formatiert, aber mehr ist mir grad zu mühselig.....



  • Ich habe nochmal ein wenig meinen code geändert , aber ich verstehe nicht warum ich zwar arrays einlesen kann , aber es trotzdem nicht denn Array sortiert ausgibt ?

    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
    	int n;
    	int zahl[5];
    	cout<<" Anzahl der einzulesenden Elemente ";
    	cin>>n;
    	if ( n>5 )//Plausibilitaetskontrolle
    	{
    
    		cout << "Es sind nicht mehr elemente verfügbar" << endl;
    
    	}
    	cout<<" Elemente eingeben ";
    	for (int i=0;i<n;i++){//Eingabe der Arrayelemente
    	cin>>zahl[i];
    
    	for(int i = 0; i< 5 ; ++i)
    	{
    
    		if(zahl[i] > zahl[i+1])
    		{
    			int swap = zahl[i+1];
    			zahl[i+1] = zahl[i];
    			zahl[i]   = swap;
    
    		}
    
    	}
    
        cout << "sortiert" << endl;
    	for(int i = 0;i< 5 ; ++i) {
    
    		cout << zahl[i] << " Bye " << endl;
    	}
    
    	}
    
    	return 0;
    }
    

    Ist denn mein code falsch?

    Könnt ihr mir wenigstens einen tipp geben wo der Fehler liegt?



  • Hallo21 schrieb:

    Könnt ihr mir wenigstens einen tipp geben wo der Fehler liegt?

    Wie kommst du darauf, dass es nur einer ist?

    Rück deinen Code mal ordentlich ein, dann siehst du es.





  • Aber könnt ihr mir nicht trotzdem sagen ,was in meinem code nicht stimmt?



  • Hallo21 schrieb:

    Aber könnt ihr mir nicht trotzdem sagen ,was in meinem code nicht stimmt?

    -->

    MFK schrieb:

    Rück deinen Code mal ordentlich ein, dann siehst du es.



  • for(int i = 0; i< 5 ; ++i)
        {
    
            if(zahl[i] > zahl[i+1])
            {
                int swap = zahl[i+1];
                zahl[i+1] = zahl[i];
                zahl[i]   = swap;
    
                cout << zahl[i] << " Bye " << endl;
    
            }
    
        }
    

    Sortierte Array:
    - zwieschen speichern in eine Datei, dann ausgeben
    oder
    - sortierte Array in einen anderen Array zwieschen speichern, dann ausgeben



  • Ach komm Felix, das ist sinnlos.

    Ich hab ihm den eingerückten Code doch schon gepostet, aber er will es halt nicht.

    Der Junge hat keine Ahnung vom Programmieren und ist auch nicht willig es zu lernen.

    Falls er mir da widersprochen möchte, dann solle er doch bitte erstmal den Debugger anschmeissen und das ganze durchgehen, danach konkrete Fragen stellen und diese vor allem auch formulieren (dann erledigen sich viele Fragen von selbst).

    (Falls er nicht wisse, was ein Debugger ist und wie er funktioniert, dazu gibt es Google und die Dokumentation seienr Entwicklugnsumgebung...)



  • Alternative:
    Du kannst Container verwenden:
    http://de.wikipedia.org/wiki/C%2B%2B-Standardbibliothek
    http://www.c-plusplus.net/forum/143816-full

    damit kannst sehr leicht und schnell deine "Array" sortieren



  • Kann mir nicht jemand einfach mein Programm korrigieren?



  • Hallo21 schrieb:

    Kann mir nicht jemand einfach mein Programm korrigieren?

    Klar, was zahlst du?



  • MFK schrieb:

    Hallo21 schrieb:

    Kann mir nicht jemand einfach mein Programm korrigieren?

    Klar, was zahlst du?

    Ach, komm schon. Wenn jeder ein paar Zeilen korrigiert, dann sollten wir das zusammen doch recht schnell hinkriegen. Ich mach mal den Anfang mit den Zeilen 52 bis 68: nix auszusetzen.



  • Michael E. schrieb:

    Ich mach mal den Anfang mit den Zeilen 52 bis 68: nix auszusetzen.

    Ach ja?
    Syntaxfehler, schließende Klammer zuviel.

    http://ideone.com/h5Xpha



  • Wutz schrieb:

    Michael E. schrieb:

    Ich mach mal den Anfang mit den Zeilen 52 bis 68: nix auszusetzen.

    Ach ja?
    Syntaxfehler, schließende Klammer zuviel.

    http://ideone.com/h5Xpha

    Ou Mann, mir war irgendwie schon klar, dass man hier keinen Witz machen kann, ohne ihn eine Stunde vorher in Großbuchstaben anzukündigen. Ich hab aber eher damit gerechnet, dass jemand bemerken wird, dass man an den entsprechenden Zeilen aussetzen kann, dass sie überhaupt existieren. Stattdessen kommst du auch noch mit einem Fehler, der gar nicht vorhanden ist, denn der letzte Code von Hallo21 lässt sich problemlos kompilieren 🙄



  • Michael E., wenn du Witze machen willst, musst du wie Sone oder Nathan "SCNR" dazu schreiben. Solche Witze waren zwar nie lustig, aber immerhin war die Absicht klar :p


Anmelden zum Antworten