"We are back" « oc.at

Templates

-wrax- 02.06.2002 - 20:20 852 7
Posts

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1531
kann mir jemand von euch templates erklären...

wir muessen in ein beliebiges vererbungs-programm, tamplates einbauen (container-templ)

ich hab keine ahnung was der lehrer von uns will...

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1531
wäre nett wenn mir jemand an hand eines kleinen beispiel, container-tamplates demonstriert...

irreversible

oberspammer
Avatar
Registered: Mar 2001
Location: 2524
Posts: 1058
welche sprache?? c++?

-wrax-

<...>
Avatar
Registered: Mar 2002
Location: .at
Posts: 1531
hab schon eine eigene loesung....
c++ (turboc-compiler)

ihr braucht nicht mehr zu antworten
-------------------------------------------------------

#include<iostream.h>
#include<conio.h>
#include<dos.h>

class oben
{
protected: int o;
};



class mitte1: public oben
{
protected: int m1;
};
class mitte2: public oben
{
protected: int m2;
};



class unten1: public mitte1
{
public:
void eingabe ()
{
cout<<"\n O: "; cin>>o;
cout<<"\n M1: "; cin>>m1;
cout<<"\n U1: "; cin>>u1;
}
void ausgabe ()
{
cout<<"\n Ausg. O: "<<o;
cout<<"\n\n Ausg. M1: "<<m1;
cout<<"\n\n Ausg. U1: "<<u1;
}

protected:
int u1;
};
class unten2: public mitte2
{
public:
void eingabe ()
{
cout<<"\n O: "; cin>>o;
cout<<"\n M2: "; cin>>m2;
cout<<"\n U2: "; cin>>u2;
}
void ausgabe ()
{
cout<<"\n Ausg. O: "<<o;
cout<<"\n\n Ausg. M2: "<<m2;
cout<<"\n\n Ausg. U2: "<<u2;
}

protected:
int u2;
};



template<class T>
class stack
{
public:
stack (int s=10): size(s), top(-1) {dat = new T[size];}
~stack() {delete [] dat;}

// push legt ein element auf das stack
void push(const T& t)
{
top=top+1;
dat[top]=t;
}
// pop entfaernt ein elemen von stack
void pop()
{
top=top-1;
}

void ausgabe()
{
dat[top].ausgabe();
}
void eingabe()
{
dat[top].eingabe();
}

// printInfo gibt informationen ueber das Stack aus
void printInfo () {cout<<" Element: "<<top+1<<" von "<<size;}

// ueberprueft ob stack leer ist
int isEmpty()
{
if(top==-1) return 1; //1=leer
else return 0; //0=nicht leer
}
// ueberprueft ob stack voll ist
int isFull()
{
if(top==size-1) return 1; //1=voll
else return 0; //0=nicht voll
}

protected:

int size; // groeáe des stack
int top; // gibt aktuelle position im Stack an
T* dat; // fuer template
};



void main ()
{
clrscr();
textmode(C4350);

int menue,hilf;

// Instanzen der 2 untersten Klassen
unten1 u1;
unten2 u2;

// Stack wird instanziert
stack<unten1> unten1Stack(5);
stack<unten2> unten2Stack;


do
{
clrscr();

cout<<"\n\n ----------------------------";
cout<<"\n unten1 -> "; unten1Stack.printInfo();
cout<<"\n\n unten2 -> "; unten2Stack.printInfo();
cout<<"\n ----------------------------";

cout<<"\n\n\n";
cout<<"\n --------------------------------";
cout<<"\n I [1] Datensatz unten1 Eingabe I";
cout<<"\n I [2] Datensatz unten2 Eingabe I";
cout<<"\n I I";
cout<<"\n I [3] Datensatz unten1 Ausgabe I";
cout<<"\n I [4] Datensatz unten2 Ausgabe I";
cout<<"\n I I";
cout<<"\n I [0] Ende I";
cout<<"\n --------------------------------";
cout<<"\n Eingabe: ";
cin>>menue;

switch (menue)
{
case 1: hilf=unten1Stack.isFull();

if(hilf!=1)
{
cout<<"\n\n\n\n";
u1.eingabe();
unten1Stack.push(u1); }
else
cout<<"\n\n Container-Klasse ist voll -> keine Eingabe moeglich!",
getch();
break;

case 2: hilf=unten2Stack.isFull();
if(hilf!=1)
{
cout<<"\n\n\n\n";
u2.eingabe();
unten2Stack.push(u2); }
else
cout<<"\n\n Container-Klasse ist voll -> keine Eingabe moeglich!",
getch();
break;

case 3: hilf=unten1Stack.isEmpty();

if(hilf!=1)
{
cout<<"\n\n\n\n";
unten1Stack.ausgabe(); getch();
unten1Stack.pop();
}
else
cout<<"\n\n Container-Klasse ist leer -> keine Ausgabe moeglich!",
getch();
break;

case 4: hilf=unten2Stack.isEmpty();
if(hilf!=1)
{
cout<<"\n\n\n\n";
unten2Stack.ausgabe(); getch();
unten2Stack.pop();
}
else
cout<<"\n\n Container-Klasse ist leer -> keine Ausgabe moeglich!",
getch();
break;

case 0: break;

default: cout<<"\n Ungueltige Eingabe..."; delay(300);
break;
}

}
while(menue!=0);
}

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
omg es leben die sinnlosen beispiele ;)
falls du noch was zum nachlesen brauchst und es noch nicht selbst gefunden hast, das imo beste c++ grundlagen-tutorial (auch immer gut zum nachschlagen wenn man mal eine kleinigkeit vergessen sollte) gibts unter http://www.cplusplus.com/doc/tutorial/

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
Ich würde gern deRelict zietieren:

ajo, FYI: nochmal so an schwall sourcecode posten und du bist weg aus diesem forum

:)

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
geh das bissl text

Vir@s

Code Monkey
Registered: Nov 2000
Location: Wien
Posts: 730
:D :D :D
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz