C-Kurs/BubbleSortDebug: Unterschied zwischen den Versionen
< 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...“) |
|||
| 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 }