C-Kurs/BubbleSortDebug: Unterschied zwischen den Versionen
Erscheinungsbild
< C-Kurs
Die Seite wurde neu angelegt: „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...“ |
Keine Bearbeitungszusammenfassung |
||
| Zeile 3: | Zeile 3: | ||
<pre> | <pre> | ||
#include <stdio.h> | 1 #include <stdio.h> | ||
2 | |||
typedef struct | 3 typedef struct | ||
{ | 4 { | ||
char *data; | 5 char *data; | ||
int key; | 6 int key; | ||
} item; | 7 } item; | ||
8 | |||
item array[] = | 9 item array[] = | ||
{ | 10 { | ||
{"bill", 3}, | 11 {"bill", 3}, | ||
{"neil", 4}, | 12 {"neil", 4}, | ||
{"john", 2}, | 13 {"john", 2}, | ||
{"rick", 5}, | 14 {"rick", 5}, | ||
{"alex", 1}, | 15 {"alex", 1}, | ||
}; | 16 }; | ||
17 | |||
void sort(item *paItems, unsigned cItems) | 18 void sort(item *paItems, unsigned cItems) | ||
{ | 19 { | ||
int i = 0, j = 0; | 20 int i = 0, j = 0; | ||
int s = 1; | 21 int s = 1; | ||
22 | |||
for (i = 0; i < cItems && s != 0; i++) | 23 for (i = 0; i < cItems && s != 0; i++) | ||
{ | 24 { | ||
s = 0; | 25 s = 0; | ||
for (j = 0; j < cItems; j++) | 26 for (j = 0; j < cItems; j++) | ||
{ | 27 { | ||
if (paItems[j].key > paItems[j+1].key) | 28 if (paItems[j].key > paItems[j+1].key) | ||
{ | 29 { | ||
item Temp = paItems[j]; | 30 item Temp = paItems[j]; | ||
paItems[j] = paItems[j+1]; | 31 paItems[j] = paItems[j+1]; | ||
paItems[j+1] = Temp; | 32 paItems[j+1] = Temp; | ||
s++; | 33 s++; | ||
} | 34 } | ||
} | 35 } | ||
cItems--; | 36 cItems--; | ||
} | 37 } | ||
} | 38 } | ||
39 | |||
int main(void) | 40 int main(void) | ||
{ | 41 { | ||
int i = 0; | 42 int i = 0; | ||
43 | |||
sort(array, 5); | 44 sort(array, 5); | ||
for (i = 0; i < 5; i++) | 45 for (i = 0; i < 5; i++) | ||
{ | 46 { | ||
printf("array[%d] == {%s, %d}\n", | 47 printf("array[%d] == {%s, %d}\n", | ||
i, array[i].data, array[i].key); | 48 i, array[i].data, array[i].key); | ||
} | 49 } | ||
} | 50 } | ||
</pre> | </pre> | ||
Version vom 21. September 2009, 18:27 Uhr
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 }