015
13.07.2003, 20:46 Uhr
Oliver
S2-Pixelgeneral
|
So die komplette Klasse nochmal mit kleinen Programm:
C++: |
#include <iostream> using namespace std;
class Menge { int* elemente; int anzahl; public: Menge(); ~Menge(){delete [] elemente;} Menge(const int elements[],const int &anzahl); Menge(Menge &vorh); void Add(int element); Menge Schnittmenge(Menge &meng2); int GetAnzahl(); int GetElemente(const int &index); Menge operator=(Menge &menge2); bool IsVorhanden(const int &element); Menge Vereinigungsmenge(Menge menge2); // ... };
Menge::Menge(const int elements[],const int &anzahl2) { elemente=new int[anzahl2]; anzahl=anzahl2; for(int i =0;i<anzahl;i++) elemente[i] = elements[i]; anzahl = anzahl2; }
Menge::Menge() { elemente=0; anzahl=0; }
bool Menge::IsVorhanden(const int &element) { for(int i =0;i<anzahl;i++) if(elemente[i]==element) return 1; return 0; }
int Menge::GetAnzahl() { return anzahl; }
int Menge::GetElemente(const int &index) { return elemente[index]; }
Menge::Menge(Menge &vorh) { anzahl = vorh.GetAnzahl(); elemente = new int[anzahl]; for(int i =0;i<anzahl;i++) elemente[i] = vorh.GetElemente(i); }
Menge Menge::operator=(Menge &menge2) { anzahl=menge2.GetAnzahl(); if(anzahl) delete [] elemente; elemente = new int[anzahl]; for(int i=0;i<anzahl;i++) elemente[i] = menge2.GetElemente(i); return *this; }
void Menge::Add(int element) { Menge merke(*this); anzahl++; if(anzahl) delete [] elemente; elemente= new int[anzahl]; for(int i = 0;i<anzahl-1;i++) elemente[i]=merke.GetElemente(i); elemente[anzahl-1]=element; }
Menge Menge::Vereinigungsmenge(Menge menge2) { Menge erg; int i; for(i=0;i<anzahl;i++) if(!erg.IsVorhanden(elemente[i])) erg.Add(elemente[i]); for(i=0;i<menge2.GetAnzahl();i++) if(!erg.IsVorhanden(menge2.GetElemente(i))) erg.Add(menge2.GetElemente(i)); return erg; }
Menge Menge::Schnittmenge(Menge &meng2) { Menge erg; for(int z =0;z<meng2.GetAnzahl();z++) for(int i = 0;i<anzahl;i++) if(elemente[i] == meng2.GetElemente(z)) erg.Add(elemente[i]); return erg; }
// Das geht nicht...
int main(){
int elemente1[6] = {0,1,2,3,4,5}; int elemente2[6] = {4,5,6,7,8,9};
Menge menge1(elemente1,6); Menge menge2(elemente2,6); Menge ergebnis=menge1.Schnittmenge(menge2);
for(int i =0;i<ergebnis.GetAnzahl();i++) cout << ergebnis.GetElemente(i) << ", ";
cout << "\n\n";
Menge ergebnis2=menge1.Vereinigungsmenge(menge2);
for(i =0;i<ergebnis2.GetAnzahl();i++) cout << ergebnis2.GetElemente(i) << ", "; cin.get();
return 0; }
|
@Heiko:
Du hattest Recht, hab jetzt den = Operator, da gehts.
@Jerome83:
Bitte nimms mir nicht übel, aber ich wird auch mal was alleine machen. Das ist ja wohl nicht so schwierig. Mit cin und cout...
Es ist sowieso sinnlos das zu erklären, wenn du's sowieso nicht kapierst. Das kann man nicht so eben schnell im Forum erklären. Ein Forum ist für konkrete Fragen da.
Wenn du mehr wissen, willst kauf dir so ein kleines Taschenbuch (10 €).
Bitte versteh micht nicht falsch, aber ist so. -- Demokratie ist die Diktatur der Mehrheit.
www.siedler25.org/ ( Siedler2 - Remake ) |