Arbeiten mit Arrays in C++



  • Hallo,

    ich hoffe ich bin hier im richtigen Bereich gelandet (falls nicht, würde ich mich über einen Link zum betreffenden bereich freuen 🙂 )

    Ich habe erst vor wenigen Tagen auf Grund meines Studiums angefangen mich mit C++ zu beschäftigen und nun stehe ich vor folgendem Problem:

    Ich soll das Sortierverfahren "Bubblesort" in C++ implementieren:

    die Funktion für das Sortierverfahren sieht wie folgt aus:

    void bubblesort(int a[], unsigned la)
    {
    
    	for (int i = la - 1; i > 0; i--) {
    
    	    // innere Schleife  
    	    for (int j = 0; j < i; j++) {
    
    	      // ggf. Korrektur der Ordnung zweier,
    	      // aufeinanderfolgender Werte
    	      if (a[j] > a[j + 1]) {
    
    	        // Vertauschung
    	        int temp = a[j];
    	        a[j] = a[j + 1];
    	        a[j + 1] = temp;
    	      }
    	    }
    	  }
    

    das Problem liegt bei mir nun daran, dass es mir nicht gelingt, diese Funktion ordnungsgemäß aufzurufen:

    hier meine "main-Funktion:"

    #include<stdio.h>
    #include <iostream.h>
    #include<malloc.h>
    #include "bubble.h" // beinhaltet die Funktion bubblesort
    #include <stdlib.h>
    using namespace std;
    
    int main()
    {
    
    unsigned n;
    	unsigned i;
    	int werte[100];
    
    	cout << ("Wie viele Elemente sollen verglichen werden?");
    	cin >> n;
    	for (i=0; i< n; i++)
    	{ cout << ("Bitte geben Sie eine Zahl ein:");  
    	cin >> werte[i];
    
    	bubblesort( werte[], n);
    }
     return(0);
    
    }
    

    Der Compiler meldet, dass vor der Schließenden eckigen Klammer noch etwas folgen müsste... wenn ich nun jedoch eine Zahl angebe, meldet wer den gleichen Fehler...

    ich hoffe es kann mir jemand helfen...

    Vielen Dank & lg Dragon



  • Der richtige Bereich wäre das C++ Unterforum.



  • bubblesort(werte, n);



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • T-Dragonmaster XII schrieb:

    ...

    Du würdest dir vieles Einfacher machen wenn du deinen Code sauber formatierst...
    Für einen Anfänger ist wohl die Formatierung am besten, wo man öffnende und Schließende {} in eine separate Zeile auf jeweils die gleiche Höhe setzt.

    Zuerst einmal deine Funktion anders formatiert (ich habe sie ansonsten nicht überprüft):

    void bubblesort(int a[], unsigned la)
    {
        for (int i = la - 1; i > 0; i--)
        {
            // innere Schleife  
            for (int j = 0; j < i; j++)
            {
                // ggf. Korrektur der Ordnung zweier,
                // aufeinanderfolgender Werte
                if (a[j] > a[j + 1])
                {
                    // Vertauschung
                    int temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
    } // <-- Fehlte hier, durch bessere Formatierung sichtbar
    

    T-Dragonmaster XII schrieb:

    das Problem liegt bei mir nun daran, dass es mir nicht gelingt, diese Funktion ordnungsgemäß aufzurufen:

    Mehrere Anmerkungen:
    a) malloc und free haben in C++ nichts zu suchen! (ganz davon abgesehen das du sie eh nicht verwendest aber Header includierst die nicht benötigt werden
    b) Die Includes der Standardheader sind falsch! (Schon seit dem C++Standard von 98)
    ==> Es heißt z.B. #include <iostream> nicht #include <iostream.h>

    Also reduzieren wir mal deine Includes auf das was du tatsächlich brauchst, gültiges C++ ist und zu deinem Projekt gehört. Und wieder formatieren wir deinen Code mal neu:

    #include <iostream>
    #include "bubble.h" // beinhaltet die Funktion bubblesort
    using namespace std;
    
    int main()
    {
        unsigned int n; // Bitte ganzen Typ angeben, dies ist eine Unsitte!
        unsigned int i; // Zudem sprechende Namen wählen
        int werte[100];
    
        cout << "Wie viele Elemente sollen verglichen werden?";
        cin >> n;
        for (i=0; i< n; i++)
        {
            cout << "Bitte geben Sie eine Zahl ein:";  
            cin >> werte[i];
    
            bubblesort(werte[], n);
        }
        return 0;
    }
    

    Anmerkung: Ich würde noch einen Zeilenumbruch (cout << endl) an sinnvolle Stellen plazieren.

    Dein Problem sollte die Schließende Klammer bei der Funktion gewesen sein.

    cu André



  • bubblesort(werte[], n);
    // ==>
    bubblesort(werte, n);
    


  • ok nun funktioniert alles zu meiner Zufriedenheit...
    (jeder Anfang ist schwer 😃 )

    vielen Dank 🙂 & lg Dragon


Log in to reply