Sitzung: Jeden Freitag in der Vorlesungszeit ab 15 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/BubbleSortDebug: Unterschied zwischen den Versionen

(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 }