Aufgaben File

Werbung
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
1.1 Was ist das Ergebnis der folgenden Berechnung? (SS09 4.1)
int myFeld[] = { 1, 2, 3, 4, 5 };
int result = myFeld[3] + myFeld[4];
1.2 Was gibt das Programm nach folgendem Aufrufen aus? Begründen Sie (SS09 4.2)
cout <<*myFeld;
cout <<myFeld;
2. Folgendes Programm liegt vor. (WS09/10 4.)
#include <iostream>
using namespace std;
class Counter
{
private:
static int count;
public:
Counter()
{
++count;
cout<<"Es existieren "<<count<<" Objekte”<<endl;
}
};
int Counter::count = 0;
int main()
{
Counter a, b;
Counter c, d;
Counter e, f;
system ("Pause");
}
2.1 Was gibt das Programm auf dem Bildschirm aus?
Skizzieren Sie die Bildschirmausgabe.
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
2.2 Was würde das Programm ausgeben, wenn man keine Klassenvariablen verwendet.
Begründen Sie Ihre Antwort.
3. Was gibt folgendes Programm auf dem Bildschirm aus? Erklären Sie warum. (WS09/10 5.2)
#include<iostream>
using namespace std;
void tausche(int&, int);
int main()
{
int a=2;
int b=5;
cout<<"a = "<<a<<"\nb = "<<b<<endl;
tausche(a,b);
cout<<"a = "<<a<<"\nb = "<<b<<endl;
system("Pause");
}
void tausche(int& a, int b)
{
int temp=a;
a=b;
b=temp;
}
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
4. Gegeben ist folgendes Programm. (SS10 5.)
#include <iostream>
#include <string>
using namespace std;
void M(string *pa,string *pb)
{
string tmp=*pa;
*pa=*pb;
*pb=tmp;
};
void S(string *array, int size)
{
for(int A=size-1;A>0;--A)
{
for(int pos=0;pos<A;++pos)
{
if(array[pos]>array[pos+1])
M(&array[pos],&array[pos+1]);
};
};
};
int main()
{
int i;
const int Z=5;
string N[Z];
cout<<"Bitte geben Sie "<<Z<<" Vornamen ein!"<<endl;
for(i=0;i<Z;++i){
cin>>N[i]; }
S(N,Z);
cout<<"Ausgabe des Programms:"<<endl;
for(i=0;i<Z;++i){
cout<<N[i]<<endl;}
system("pause");
return 0;
};
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
4.1 Was gibt das Programm am Bildschirm aus?
Erläutern Sie die Bildschirmausgabe anhand geeigneter Eingabedaten
4.2 Kommentieren Sie Syntax und Semantik der Methode M.
4.3 Was würde passieren, wenn man die Eingabeparameter der Methode M nicht als Zeiger
sondern als Variable übergeben und auch im Methodenkörper alle Stern-Operatoren (*) jeweils
weglassen würde? Erklären Sie diesen Mechanismus kurz.
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
5. Gegeben ist folgendes Programm. (WS 10/11 5.)
int main(){
int a = 3, b = 6;
int *x, *y;
x = &a;
y = &b;
int feld[] = {4,5,6,7};
system("PAUSE");
return 0;
}
Geben Sie alle Möglichkeiten, um folgende Ausgaben am Bildschirm zu realisieren:
a) den Wert der Variable a
b) den Wert der Variable b
c) die Adresse der Variable a
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
d) die Adresse der Variable b
e) den Wert des ersten Elements der Variable feld
f) die Adresse des ersten Elements der Variable feld
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
6. Gegeben ist folgendes Programm.
int main(int argc, char *argv[])
{
double preis = 12.50;
int stueck = 5;
double *zpreis = &preis;
int *zstueck = &stueck;
cout << zpreis << endl;
cout << *zstueck << endl;
int **zzstueck = &zstueck;
int ***zzzstueck = &zzstueck;
cout << zzzstueck << endl;
cout << **zzstueck << endl;
double **zzpreis = &zpreis;
cout << *zzzstueck << endl;
cout << **zzzstueck << endl;
cout << ***zzzstueck << endl;
stueck = 10;
double betrag;
int &rstueck = stueck;
rstueck = 10;
betrag = stueck * preis;
cout << "Es kostet " << betrag << " Euro um " << **zzstueck << " Stueck zu kaufen" << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
6.1 Was gibt dieses Programm auf dem Bildschirm aus?
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
6.2 Erklären sie kurz wieso.
6.3 Erklären sie folgende Zeilen.
double *zpreis = &preis;
cout << *zstueck << endl;
int **zzstueck = &zstueck;
int ***zzzstueck = &zzstueck;
cout << zzzstueck << endl;
double **zzpreis = &zpreis;
Tutorium Software-Engineering
SS 2014
Aufgaben Zeiger
cout << ***zzzstueck << endl;
int &rstueck = stueck;
rstueck = 10;
Herunterladen