Benötige Hilfe beim sortieren mittels einer Methode

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Benötige Hilfe beim sortieren mittels einer Methode

      Hallo Leute,
      ich weiß nicht warum, aber ich komme hier gerade nicht weiter.

      Aufgabe: Beim Klick auf den Button7 "Sortieren" sollen die Zeiger der Aggregate hinsichtlich ihrer Namen alphabetisch geordnet werden. Nach Namen. Vervollständigen sie hierfür die Methode void
      CRouter::Sortieren(char kriterium) in der Unit1.cpp.

      C-Quellcode

      1. //------------------------------------------------------------------------------
      2. #pragma hdrstop
      3. #include "Labor.h"
      4. #pragma package(smart_init)
      5. //------------------------------------------------------------------------------
      6. AnsiString CLabor::ZeigName(void)
      7. {
      8. return m_name;
      9. }
      10. //------------------------------------------------------------------------------
      11. void CLabor::SchreibName(AnsiString name)
      12. {
      13. m_name = name;
      14. }
      15. //------------------------------------------------------------------------------
      16. int CLabor::SchuelerAufnehmen(CSchueler* p) //aggregieren und Zeiger autom.
      17. { //inkrementieren
      18. int hilf = 0;
      19. while(m_pschueler[hilf] != NULL && hilf < anzahl) //hochzählen
      20. hilf++;
      21. m_pschueler[hilf] = p; //Aggregation erstellt
      22. return hilf;
      23. }
      24. //------------------------------------------------------------------------------
      25. AnsiString CLabor::ZeigSchuelerDaten(int nr, char id)
      26. {
      27. AnsiString hilf = "";
      28. if(m_pschueler[nr] != NULL)
      29. {
      30. if(nr<anzahl)
      31. hilf = m_pschueler[nr]->ZeigName(id) + m_pschueler[nr]->ZeigLab();
      32. } //Aufgtrag "Zeig Name" wird an das
      33. //aggr. Objekt weitergeleitet
      34. return hilf;
      35. }
      36. //------------------------------------------------------------------------------
      37. void CLabor::AggReset(void)
      38. {
      39. int i = 0;
      40. for(i=0;i<anzahl;i++)
      41. {
      42. m_pschueler[i]=NULL;
      43. }
      44. }
      45. //------------------------------------------------------------------------------
      46. CLabor::CLabor(void)
      47. {
      48. m_name = "Gruppe";
      49. m_i = 0;
      50. AggReset();
      51. }
      52. //------------------------------------------------------------------------------
      53. CLabor::CLabor(AnsiString name)
      54. {
      55. m_name = name;
      56. m_i = 0;
      57. AggReset();
      58. }
      59. //------------------------------------------------------------------------------
      60. void CLabor::schreiben(ofstream* schreib,char* pfad)//Verwaltungstechnische De-
      61. { //legation: Abspeichern von
      62. //aggr. Objekten in Datei
      63. int i=0;
      64. while(m_pschueler[i] != NULL && i < anzahl)
      65. {
      66. if(m_pschueler[i] != NULL) //Nur aggregierte Objekte abspeichern
      67. {
      68. m_pschueler[i]->InDateiSchreiben(schreib);
      69. }
      70. if (!*schreib)
      71. {
      72. Application->MessageBox("Fehler bei write", "Look", MB_OK);
      73. }
      74. i++;
      75. }
      76. }
      77. //------------------------------------------------------------------------------
      78. int CLabor::lesen(CSchueler* schueler,char* pfad) //Verwaltungstechnische Dele-:
      79. { //gation: Einlesen der Daten
      80. //aus Datei und Aggregation
      81. int u = 0; //der Schüler-Objekte
      82. ifstream f(pfad,ios::binary|ios::in);
      83. if (!f)
      84. {
      85. Application->MessageBox("Fehler bei open", "Look", MB_OK);
      86. }
      87. schueler[u].AusDateiLesen(&f); //Auftrag "von Datei lesen" wird an das aggr.
      88. //Objekt weitergeleitet
      89. this->SchuelerAufnehmen(&schueler[u]); //Aggregation erstellen!
      90. while(f)
      91. {
      92. u++;
      93. schueler[u].AusDateiLesen(&f); //Auftrag "von Datei lesen" wird an das
      94. //aggr. Objekt weitergeleitet
      95. this->SchuelerAufnehmen(&schueler[u]); //Aggregation erstellt
      96. }
      97. m_pschueler[u] = NULL;
      98. f.close();
      99. return u;
      100. }
      101. void CLabor::Sortieren(void)
      102. {
      103. /*
      104. int i,j;
      105. CSchueler* hilf;
      106. int anz = 0;
      107. while(m_pschueler[anz] != NULL && anz < anzahl) //hochzählen
      108. anz++;
      109. anz--;
      110. */
      111. // Ab hier Quelltext ergänzen
      112. // Tipp: Sie können zwei in sich verschachtelte for-Schleifen verwenden, die
      113. // bis anz-1 bzw. bis anz zählen und n i c h t bis anzahl.
      114. // Beim Aufruf von ZeigName('E') übergeben Sie 'E' !!
      115. }
      116. /******************************************************************************/
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Damet ()

      bubblesort ist der einfachste würde ich mal sagen. kannst aber auch quicksort nehmen, das ist ein noch relativ einfacher und dabei effizienter algorithmus. auf wikipedia sollten beispielquellcodes sein. lies dir aber auch durch, was dabei gemacht wird. wenn du angeben willst, implementiere was exotisches wie bottom up heap sort. aber dann wirds offensichtlich, dass es nicht von dir ist :D
      Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)






      Skill ist, wenn Luck zur Gewohnheit wird