C-Kurs/BubbleSortDebug
< C-Kurs
Version vom 21. September 2009, 18:27 Uhr von Aeichner (Diskussion | Beiträge)
Das folgende Programm, welches ein Array von Elementen mit Hilfe von Bubblesort sortiert enthält verschiedene Bugs: Debugge es mit printf,assert und/oder gdb, so dass es wie gewünscht funktioniert:
1 #include <stdio.h> 2 3 typedef struct 4 { 5 char *data; 6 int key; 7 } item; 8 9 item array[] = 10 { 11 {"bill", 3}, 12 {"neil", 4}, 13 {"john", 2}, 14 {"rick", 5}, 15 {"alex", 1}, 16 }; 17 18 void sort(item *paItems, unsigned cItems) 19 { 20 int i = 0, j = 0; 21 int s = 1; 22 23 for (i = 0; i < cItems && s != 0; i++) 24 { 25 s = 0; 26 for (j = 0; j < cItems; j++) 27 { 28 if (paItems[j].key > paItems[j+1].key) 29 { 30 item Temp = paItems[j]; 31 paItems[j] = paItems[j+1]; 32 paItems[j+1] = Temp; 33 s++; 34 } 35 } 36 cItems--; 37 } 38 } 39 40 int main(void) 41 { 42 int i = 0; 43 44 sort(array, 5); 45 for (i = 0; i < 5; i++) 46 { 47 printf("array[%d] == {%s, %d}\n", 48 i, array[i].data, array[i].key); 49 } 50 }