Skip to content

Latest commit

 

History

History
99 lines (74 loc) · 2.43 KB

141127-U.md

File metadata and controls

99 lines (74 loc) · 2.43 KB

Übung 9

Aufgabe 25

Welchen Wert liefert eq("Text", "Text")?

int eq(char [] s1 , char [] s2) {
	return s1 == s2;
}

\Lsg

Der Vergleich der Zeiger sollte immer falsch ergeben (Optimierung mal vernachlässigt). Begründung: Zwei Strings liegen an zwei Speicheradressen, der Vergleich von vercshiedenen Speicheradressen sollte falsc sein.

Aufgabe 26

Was macht die folgende Funktion und wie funktioniert sie?

\Lsg

int f(int a[], int n, int v) {
//	NoErr/falsch zurückgeben
	if(n == 0){ return 0; }
//	vergleiche erste position 
	else if(a[0] == v){ return 1; }
//	rekursiere über das array ohne das erste element mit laenge-1 
	else{ return f(a+1, n-1, v); }
}
// f sucht v in einem n langen a[]
// 0 \Rightarrow nicht gefunden
// 1 \Rightarrow gefunden
// Die Position wird nicht geliefert

Aufgabe 27

Geben Sie den Wert von a[1][0] nach der Ausführung des folgenden Codeausschnitts an.

\Lsg

//erst auf Null in Zeile 1, Spalte 0
a[1][0] = 0;
//Zeile 0 wird auf 1 gesetzt, aber auch das 9. Elm
for(k = 0; k <= 8; k++) a[0][k] = 1;
//Zeile 1, Spalte 0 ist daher auch 1
//a[1][0] hat die gleiche Adresse wie a[0][8]
//s.a. Rechteckformel

Aufgabe 28

Die Statement Coverage einer Menge von Tests ist der Anteil der Codezeilen des zu testenden Programms, der mit diesen Tests durchlaufen wird.

Überlegen Sie, wie Ihr Programm aus Aufgabe,21 so getestet werden kann, dass eine hohe Statement Coverage erreicht wird. Begründen Sie, warum manche Tests dabei besser sind als andere und geben sie einen Test an, der 100% Statement Coverage erreicht.

\Lsg

Um 100% Statement Coverage zu erreichen, müssen alle Code-Zeilen durchlaufen werden.

Daher müssen die Parameter so gewählt werden, dass jede Bedingung getroffen wird. Wenn dies nicht mit einem Test erfüllbar ist, sind mehrere notwendig.

Hier sollte 5 als Parameter für den Exponenten genügen. Begründung: Es muss für gerade und ungerade Zahlen größer 2 geprüft werden.

Aufgabe 29

Finden Sie alle Fehler in folgendem Programm. Die Funktionsnamen geben an, was die Funktion machen soll.

void swap(int *a, int *b) {
	int *tmp = *b;	//int tmp=*b;
	*b = *a;
	*a = *tmp;		//*a=tmp;
}

void sort(int a[], int a_length ) {
	int i,j;
	for(i = 0; i < a_length ; i++)
		for(j = 0; j < a_length ; j++)	//j=i
			if(a[j] < a[i])
				swap(a[i], a[j]);
}

int main () {
	double a[] = {1, 3, 8, 0, 1, 4,			//umbruch mit \
	20, 0, -1, -2};
	sort(a, 11);
	return 0;
}