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
- //------------------------------------------------------------------------------
- #pragma hdrstop
- #include "Labor.h"
- #pragma package(smart_init)
- //------------------------------------------------------------------------------
- AnsiString CLabor::ZeigName(void)
- {
- return m_name;
- }
- //------------------------------------------------------------------------------
- void CLabor::SchreibName(AnsiString name)
- {
- m_name = name;
- }
- //------------------------------------------------------------------------------
- int CLabor::SchuelerAufnehmen(CSchueler* p) //aggregieren und Zeiger autom.
- { //inkrementieren
- int hilf = 0;
- while(m_pschueler[hilf] != NULL && hilf < anzahl) //hochzählen
- hilf++;
- m_pschueler[hilf] = p; //Aggregation erstellt
- return hilf;
- }
- //------------------------------------------------------------------------------
- AnsiString CLabor::ZeigSchuelerDaten(int nr, char id)
- {
- AnsiString hilf = "";
- if(m_pschueler[nr] != NULL)
- {
- if(nr<anzahl)
- hilf = m_pschueler[nr]->ZeigName(id) + m_pschueler[nr]->ZeigLab();
- } //Aufgtrag "Zeig Name" wird an das
- //aggr. Objekt weitergeleitet
- return hilf;
- }
- //------------------------------------------------------------------------------
- void CLabor::AggReset(void)
- {
- int i = 0;
- for(i=0;i<anzahl;i++)
- {
- m_pschueler[i]=NULL;
- }
- }
- //------------------------------------------------------------------------------
- CLabor::CLabor(void)
- {
- m_name = "Gruppe";
- m_i = 0;
- AggReset();
- }
- //------------------------------------------------------------------------------
- CLabor::CLabor(AnsiString name)
- {
- m_name = name;
- m_i = 0;
- AggReset();
- }
- //------------------------------------------------------------------------------
- void CLabor::schreiben(ofstream* schreib,char* pfad)//Verwaltungstechnische De-
- { //legation: Abspeichern von
- //aggr. Objekten in Datei
- int i=0;
- while(m_pschueler[i] != NULL && i < anzahl)
- {
- if(m_pschueler[i] != NULL) //Nur aggregierte Objekte abspeichern
- {
- m_pschueler[i]->InDateiSchreiben(schreib);
- }
- if (!*schreib)
- {
- Application->MessageBox("Fehler bei write", "Look", MB_OK);
- }
- i++;
- }
- }
- //------------------------------------------------------------------------------
- int CLabor::lesen(CSchueler* schueler,char* pfad) //Verwaltungstechnische Dele-:
- { //gation: Einlesen der Daten
- //aus Datei und Aggregation
- int u = 0; //der Schüler-Objekte
- ifstream f(pfad,ios::binary|ios::in);
- if (!f)
- {
- Application->MessageBox("Fehler bei open", "Look", MB_OK);
- }
- schueler[u].AusDateiLesen(&f); //Auftrag "von Datei lesen" wird an das aggr.
- //Objekt weitergeleitet
- this->SchuelerAufnehmen(&schueler[u]); //Aggregation erstellen!
- while(f)
- {
- u++;
- schueler[u].AusDateiLesen(&f); //Auftrag "von Datei lesen" wird an das
- //aggr. Objekt weitergeleitet
- this->SchuelerAufnehmen(&schueler[u]); //Aggregation erstellt
- }
- m_pschueler[u] = NULL;
- f.close();
- return u;
- }
- void CLabor::Sortieren(void)
- {
- /*
- int i,j;
- CSchueler* hilf;
- int anz = 0;
- while(m_pschueler[anz] != NULL && anz < anzahl) //hochzählen
- anz++;
- anz--;
- */
- // Ab hier Quelltext ergänzen
- // Tipp: Sie können zwei in sich verschachtelte for-Schleifen verwenden, die
- // bis anz-1 bzw. bis anz zählen und n i c h t bis anzahl.
- // Beim Aufruf von ZeigName('E') übergeben Sie 'E' !!
- }
- /******************************************************************************/