Fragen zur CE-Prfung
WS98/99
Bitte diese Aufgabe auf separaten Blttern lsen.

Aufgabe 1:  (12 Punkte)
Ein Unternehmen unterhlt ein Stckgutlager. Zur Beurteilung der Effizienz der 
Lagerhaltung hat das Unternehmen eine Definition fr den Lagerwert getroffen. Dieser 
berechnet sich aus den einzelnen Lagerposten, wobei die Stcke von angebrochenen 
Gropackungen mit nur 95% des Einzelwertes gerechnet werden.
Das Lager ist im Rechner als Feld von Strukturen mit folgendem Aufbau abgelegt. 

const int lagerGroesse = 1000;
struct Artikel
{ 
    char iNummer[30];  // Artikelbezeichung in der 
Firma
    int ve;            // Anzahl Artikel in einer
                       //   Gropackung
    int bestand;       // aktueller Bestand
    int minBestand;    // Mindestbestand;
    float wert;        // Preis pro Stueck bei 
kompletten 
                       //    Grosspackung
} lager[lagerGroesse];

Historisch ist die Interpretation des Lagerabbildes gewachsen, soda das Feld 
bestand auch negative Werte besitzen kann. Dies bedeutet dann, da der Artikel 
gerade nicht verfgbar ist und die aktuelle Nachfrage so viele Stcke umfat. Dieser 
Fall ist nur fr das Bestellwesen von Bedeutung. Angebrochene Gropackungen 
erkennen Sie daran, da der aktuelle Bestand kein ganzzahliges Vielfaches der 
Verpackungseinheit ist. Nicht belegte Posten erkennen Sie daran, da sowohl ve, als 
auch bestand den Wert 0 haben.

a) Erstellen Sie eine C++-Funktion die der Lagerwert mit die oben definierten 
Berechungsvorschrift berechnet und als Funktionswert zurckgibt. 
b) Charakterisieren Sie den Mechanismus, ber den Ihre Funktion Zugriff auf das 
Lagerabbild erhlt. 
c) Welche andere Mglichkeiten bestehen um der Funktion den Zugriff auf das 
Lagerabbild zu ermglichen. Beschreiben Sie 1 weiteres Verfahren.


Hinweis:
Ein Struktogramm oder auch eine strukturierte Klartextlsung kann Mngel in der 
C++-Funktion ausgleichen.



Aufgabe 2: (8 Punkte)
Um fremde Programme schnell erfassen zu knnen ist es notwendig allein aus den 
verwendeten Operatoren die zugrundeliegenden Datenstrukturen zu sehen. Dies erspart 
sicherlich nicht immer ein exaktes nachlesen der Datenvereinbarungen, aber um einem 
berblick zu erhalten gengt es.
Nachstehende C++ Operationen sind bei einer entsprechenden Typvereinbarung 
syntaktisch korrekt.

Definieren Sie jeweils eine der mglicherweise verschiedenen zulssigen 
Datenvereinbarungen der beteiligten Variablen (auer n). Die Variable n sei stets wie 
folgt definiert:
int n;

Hinweise:  
? Definieren Sie alle irrelevanten Datentypen als Typ int.
? Alle Teilaufgaben sind voneinander unabhngig.
? Falls Sie die Definitionen nicht in C++ Syntax schreiben knnen, drcken Sie es grafisch oder  
verbal aus.
? Die Teilaufgaben i und j ermglichen Bonuspunkte!

Beispiel: x = & n;
	   Lsung: int * x;


a) 	n = xz[n];
b) 	n = x[n].z[1];
c)		n = x.y-z;
d)		n = x->y->z;			
e)		n = z(3)-x;	
f)		n = z(3)->x;	
g)		n = x->z(3);
h) 	x = x->x;				
i)		n = (*z)(3)->x;
j) 	n = (*x)[n];

