Problem mit Bubblesort und string



  • Morgen;

    habe folgendes in meinem Programm:

    void bubblesort(int Teilnehmer, int Startnummer[], string Namen[])
    {
     for (int i = 0; i < Teilnehmer -1; ++i) 
     {
      for (int j = 0; j < Teilnehmer - i - 1; ++j) 
      {
       if (Startnummer[j] > Startnummer[j + 1]) 
       {
        int tmp = Startnummer[j];
        string tmp2 = Namen[j];
        Startnummer[j] = Startnummer[j + 1];
        Namen[j] = Namen[j + 1];
        Startnummer[j + 1] = tmp;
        Namen[j + 1] = tmp;
       }
      }
     }
    }
    

    Jetzt wird mir allerdings nach der Sortierung, anstatt der Name den ich in mein Array (string Namen[]) übergeben habe irgendein beliebiges Symbol ausgegeben.
    Was stimmt da nicht ?

    LG David



  • oid bubblesort(int Teilnehmer, int Startnummer[], string Namen[])
    {
     for (int i = 0; i < Teilnehmer -1; ++i) 
     {
      for (int j = 0; j < Teilnehmer - i - 1; ++j) 
      {
       if (Startnummer[j] > Startnummer[j + 1]) 
       {
        int tmp = Startnummer[j];
        string tmp2 = Namen[j];
        Startnummer[j] = Startnummer[j + 1];
        Namen[j] = Namen[j + 1];
        Startnummer[j + 1] = tmp;
        Namen[j + 1] = tmp;   <---- tmp2
       }
      }
     }
    }
    

    (Weiß gar nicht, wieso das überhaupt compiliert hat.)


  • Mod

    Bashar schrieb:

    (Weiß gar nicht, wieso das überhaupt compiliert hat.)

    Der Zuweisungsoperator von string hat eine Überladung für char.

    Fiese Falle. War mir selber bisher noch nicht bewusst, dass dies natürlich auch Integerzuweisungen erlaubt.



  • //Hat sich erledigt 😉


  • Mod

    Davidlocke13 schrieb:

    Hier mal mein ganzer Code:

    Dir ist schon klar, dass Bashar deine Frage beantwortet hat? Lies seinen Beitrag noch mal vollständig und aufmerksam.

    Und bitte nutze in C++ kein new für Arrays. vector ist immer die klar bessere Wahl. Hier schreit einen auch irgendwie die Nutzung eines eigenen Datentyps für die Kombination von Name und Nummer an. Das sind zwei einfache Veränderungen, die das Programm sehr viel besser machen würden.



  • Schuldigung habe es erst nach meinem Post gelesen !

    Hatte bis jetzt noch kein vector in der Berufsschule kommt aber bestimmt noch.


  • Mod

    Davidlocke13 schrieb:

    Hatte bis jetzt noch kein vector in der Berufsschule kommt aber bestimmt noch.

    Leider habe ich da so meine Zweifel. Wenn die new vor vector bringen, dann ist das höchstwahrscheinlich ein Lehrer der vor 40 Jahren mal ein Fortran gelernt hat und nun mittels einer Übersetzungstabelle Fortran in C++ macht (weil niemand mehr den Fortrankurs belegte), ohne eine Ahnung zu haben, wie C++ richtig geht.



  • @SeppJ
    Ich hab' ne Ahnung von C++, aber ich würde C++ nicht unterrichten wollen.
    Ich wüsste nicht wo ich anfangen soll.
    Im Prinzip braucht man einen guten Überblick über die ganze Sprache damit man C++ gut anwenden kann.

    Aber OK, gleich mit new loszulegen ist vermutlich wirklich nicht der richtige Weg.
    Und Lehrer Leute die [] bei Parametern verwenden gehören sowieso gedroschen.


  • Mod

    hustbaer schrieb:

    @SeppJ
    Ich hab' ne Ahnung von C++, aber ich würde C++ nicht unterrichten wollen.
    Ich wüsste nicht wo ich anfangen soll.
    Im Prinzip braucht man einen guten Überblick über die ganze Sprache damit man C++ gut anwenden kann.

    Ich selber würde es auch nicht lehren wollen, dafür bin ich viel zu schlecht. Aber ich kann trotzdem andere schlechte Lehrer erkennen. 🙂



  • SeppJ:
    Didaktisch oder bzgl. Kompetenz? Ich hoffe, Du meinst ersteres.



  • Nun, man folgt bekannten Mustern, beispielsweise: The C++ Programming Language


  • Mod

    Eisflamme schrieb:

    SeppJ:
    Didaktisch oder bzgl. Kompetenz?

    Ich wüsste wie hustbaer nicht, wie ich anfangen sollte und würde daher folgendes tun:

    knivil schrieb:

    Nun, man folgt bekannten Mustern, beispielsweise: The C++ Programming Language



  • Und was macht das an Dir "viel zu schlecht"? Wenn Leute Deiner Qualität diesbzgl. mehr an die eigenen didaktischen Fähigkeiten glauben würden als die ganzen Anfänger, hätten wir nicht so viele dämliche Youtube- und Texttutorials da draußen. 😉 Wenn es eine Zeitfrage ist, keine Frage, aber "dafür bin ich viel zu schlecht" ist eine Ausrede.


  • Mod

    Eisflamme schrieb:

    Und was macht das an Dir "viel zu schlecht"?

    Ich wäre eben nicht in der Lage*, ein eigenes Programm aufzustellen. Ein Buch vorlesen kann jeder, dafür muss der Berufsschullehrer nicht einmal C++ können. Es ist natürlich ein schlechtes Zeichen für seinen Kurs, dass er sich nicht an eines der besseren Bücher hält. Das zeigt, dass er sie wahrscheinlich gar nicht kennt.

    *: Möglicherweise sogar schon. Aber ich habe das Gefühl, dass ich es nicht können sollte.



  • Es geht bei einem Kurs nicht darum Buecher vorzulesen, sondern aus dem angebotenen Material auszuwaehlen, Kernideen herausarbeiten und didaktisch aufbereiten.



  • Nicht können solltest? Wieso nicht? Nicht können sollen wollen würde ich verstehen oder meinetwegen auch nicht können wollen, weil Du keine Lust auf die Schüler hast. Egal, jedenfalls ist Buch vortragen immer noch besser als falsche oder veraltete Inhalte rüberbringen. Das ist sogar schädlich, dann haben die didaktisch hochwertig Müll gelernt und behalten das im Kopf. Aber ich hab jetzt genug den Thread OT gemacht.


Log in to reply