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...“) |
PaulG (Diskussion | Beiträge) K (verschob „Ckurs/BubbleSortDebug“ nach „C-Kurs/BubbleSortDebug“) |
||
| (4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
<pre> | <pre> | ||
#include <stdio.h> | #include <stdio.h> | ||
| − | |||
typedef struct | typedef struct | ||
{ | { | ||
| − | + | char *data; | |
| − | + | int key; | |
} item; | } item; | ||
| − | item array[] = | + | item array[] = { |
| − | { | + | {"bill", 3}, |
| − | + | {"neil", 4}, | |
| − | + | {"john", 2}, | |
| − | + | {"rick", 5}, | |
| − | + | {"alex", 1}, | |
| − | |||
}; | }; | ||
| + | |||
| + | void sort(item *paItems, unsigned int cItems) { | ||
| + | int i = 0, j = 0; | ||
| + | int s = 1; | ||
| − | + | for (i = 0; i < cItems && s != 0; i++) { | |
| − | + | s = 0; | |
| − | + | for (j = 0; j < cItems; j++){ | |
| − | + | if (paItems[j].key > paItems[j+1].key) { | |
| − | + | item Temp = paItems[j]; | |
| − | + | paItems[j] = paItems[j+1]; | |
| − | + | paItems[j+1] = Temp; | |
| − | + | s++; | |
| − | + | } | |
| − | + | } | |
| − | + | cItems--; | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
} | } | ||
| − | int main(void) | + | int main(void) { |
| − | { | + | int i = 0; |
| − | + | sort(array, 5); | |
| − | + | for (i = 0; i < 5; i++) { | |
| − | + | printf("array[%d] == {%s, %d}\n", i, array[i].data, array[i].key); | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
} | } | ||
</pre> | </pre> | ||
Aktuelle Version vom 5. März 2013, 17:37 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:
#include <stdio.h>
typedef struct
{
char *data;
int key;
} item;
item array[] = {
{"bill", 3},
{"neil", 4},
{"john", 2},
{"rick", 5},
{"alex", 1},
};
void sort(item *paItems, unsigned int cItems) {
int i = 0, j = 0;
int s = 1;
for (i = 0; i < cItems && s != 0; i++) {
s = 0;
for (j = 0; j < cItems; j++){
if (paItems[j].key > paItems[j+1].key) {
item Temp = paItems[j];
paItems[j] = paItems[j+1];
paItems[j+1] = Temp;
s++;
}
}
cItems--;
}
}
int main(void) {
int i = 0;
sort(array, 5);
for (i = 0; i < 5; i++) {
printf("array[%d] == {%s, %d}\n", i, array[i].data, array[i].key);
}
}