diff --git a/20190128/aufgabe-3-20160129.c b/20190128/aufgabe-3-20160129.c new file mode 100644 index 0000000000000000000000000000000000000000..d99132fcf7a86b293c935794295c258c25726b55 --- /dev/null +++ b/20190128/aufgabe-3-20160129.c @@ -0,0 +1,31 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +[...] + +int main (void) +{ + operation *op[4]; + op[0] = new_plus (); + op[1] = new_minus (); + op[2] = new_times (); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/aufgabe-3-20170206.c b/20190128/aufgabe-3-20170206.c new file mode 100644 index 0000000000000000000000000000000000000000..69c78edeb13d6c015a3f2a7eca66dc46ccb8edfe --- /dev/null +++ b/20190128/aufgabe-3-20170206.c @@ -0,0 +1,33 @@ +#include <stdio.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +[...] + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort (strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort (numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20160129-1.c b/20190128/loesung-3-20160129-1.c new file mode 100644 index 0000000000000000000000000000000000000000..6bbf02808602d8ae7d172f8e0786ecdff2c2cd92 --- /dev/null +++ b/20190128/loesung-3-20160129-1.c @@ -0,0 +1,29 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +int main (void) +{ + operation *op[4]; + op[0] = new_plus (); + op[1] = new_minus (); + op[2] = new_times (); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/loesung-3-20160129-2.c b/20190128/loesung-3-20160129-2.c new file mode 100644 index 0000000000000000000000000000000000000000..67621ec9569b87ec029541eb3f32b1fb6d8d8e82 --- /dev/null +++ b/20190128/loesung-3-20160129-2.c @@ -0,0 +1,44 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +operation *new_plus (void) +{ + return NULL; +} + +operation *new_minus (void) +{ + return NULL; +} + +operation *new_times (void) +{ + return NULL; +} + +int main (void) +{ + operation *op[4]; + op[0] = new_plus (); + op[1] = new_minus (); + op[2] = new_times (); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/loesung-3-20160129-3.c b/20190128/loesung-3-20160129-3.c new file mode 100644 index 0000000000000000000000000000000000000000..0fdb0fcf28413230215fa835f79fc19853819303 --- /dev/null +++ b/20190128/loesung-3-20160129-3.c @@ -0,0 +1,44 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +operation *new_plus (void) +{ + return new_operation (); +} + +operation *new_minus (void) +{ + return new_operation (); +} + +operation *new_times (void) +{ + return new_operation (); +} + +int main (void) +{ + operation *op[4]; + op[0] = new_plus (); + op[1] = new_minus (); + op[2] = new_times (); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/loesung-3-20160129-4.c b/20190128/loesung-3-20160129-4.c new file mode 100644 index 0000000000000000000000000000000000000000..283cb896cda4448e9aa2f1ae5accd3524020869c --- /dev/null +++ b/20190128/loesung-3-20160129-4.c @@ -0,0 +1,65 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +int calculate_plus (int a, int b) +{ + return a + b; +} + +operation *new_plus (void) +{ + operation *op = new_operation (); + op->calculate = calculate_plus; + return op; +} + +int calculate_minus (int a, int b) +{ + return a - b; +} + +operation *new_minus (void) +{ + operation *op = new_operation (); + op->calculate = calculate_minus; + return op; +} + +int calculate_times (int a, int b) +{ + return a * b; +} + +operation *new_times (void) +{ + operation *op = new_operation (); + op->calculate = calculate_times; + return op; +} + +int main (void) +{ + operation *op[4]; + op[0] = new_plus (); + op[1] = new_minus (); + op[2] = new_times (); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/loesung-3-20160129-5.c b/20190128/loesung-3-20160129-5.c new file mode 100644 index 0000000000000000000000000000000000000000..a5c91f65ee42aec78fb3577be60033631e791f4f --- /dev/null +++ b/20190128/loesung-3-20160129-5.c @@ -0,0 +1,68 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +int calculate_plus (int a, int b) +{ + return a + b; +} + +operation *new_plus (void) +{ + operation *op = new_operation (); + op->symbol = '+'; + op->calculate = calculate_plus; + return op; +} + +int calculate_minus (int a, int b) +{ + return a - b; +} + +operation *new_minus (void) +{ + operation *op = new_operation (); + op->calculate = calculate_minus; + op->symbol = '-'; + return op; +} + +int calculate_times (int a, int b) +{ + return a * b; +} + +operation *new_times (void) +{ + operation *op = new_operation (); + op->calculate = calculate_times; + op->symbol = '*'; + return op; +} + +int main (void) +{ + operation *op[4]; + op[0] = new_plus (); + op[1] = new_minus (); + op[2] = new_times (); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/loesung-3-20160129-6.c b/20190128/loesung-3-20160129-6.c new file mode 100644 index 0000000000000000000000000000000000000000..1e63e25fcb06b4bbe7ce0456f7594beef26e251d --- /dev/null +++ b/20190128/loesung-3-20160129-6.c @@ -0,0 +1,68 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +int calculate_plus (int a, int b) +{ + return a + b; +} + +operation *new_plus (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '+'; + op->calculate = calculate_plus; + return op; +} + +int calculate_minus (int a, int b) +{ + return a - b; +} + +operation *new_minus (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '-'; + op->calculate = calculate_minus; + return op; +} + +int calculate_times (int a, int b) +{ + return a * b; +} + +operation *new_times (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '*'; + op->calculate = calculate_times; + return op; +} + +int main (void) +{ + operation *op[4]; + op[0] = new_plus (); + op[1] = new_minus (); + op[2] = new_times (); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/loesung-3-20160129-7.c b/20190128/loesung-3-20160129-7.c new file mode 100644 index 0000000000000000000000000000000000000000..a576cdb6a67ed5af72b72c11bcb5a8f91af135e2 --- /dev/null +++ b/20190128/loesung-3-20160129-7.c @@ -0,0 +1,68 @@ +#include <stdio.h> +#include <stdlib.h> + +typedef struct +{ + char symbol; + int (*calculate) (int a, int b); +} +operation; + +operation *new_operation (void) +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '?'; + op->calculate = NULL; + return op; +} + +int calculate_plus (int a, int b) +{ + return a + b; +} + +operation *new_plus () +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '+'; + op->calculate = calculate_plus; + return op; +} + +int calculate_minus (int a, int b) +{ + return a - b; +} + +operation *new_minus () +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '-'; + op->calculate = calculate_minus; + return op; +} + +int calculate_times (int a, int b) +{ + return a * b; +} + +operation *new_times () +{ + operation *op = malloc (sizeof (operation)); + op->symbol = '*'; + op->calculate = calculate_times; + return op; +} + +int main (void) +{ + operation *op[4]; + op[0] = new_plus ("Hello, world!"); + op[1] = new_minus (42, 137); + op[2] = new_times (3.14159265358979323846, NULL, "Hallo?", op, calculate_times); + op[3] = NULL; + for (int i = 0; op[i]; i++) + printf ("2 %c 3 = %d\n", op[i]->symbol, op[i]->calculate (2, 3)); + return 0; +} diff --git a/20190128/loesung-3-20170206-1.c b/20190128/loesung-3-20170206-1.c new file mode 100644 index 0000000000000000000000000000000000000000..b57039e35286fd78a3cc15d1b3ba535fbd9ab984 --- /dev/null +++ b/20190128/loesung-3-20170206-1.c @@ -0,0 +1,31 @@ +#include <stdio.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort (strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort (numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-2.c b/20190128/loesung-3-20170206-2.c new file mode 100644 index 0000000000000000000000000000000000000000..845f8bfd2eee1817764348573c984a7763cfcc9e --- /dev/null +++ b/20190128/loesung-3-20170206-2.c @@ -0,0 +1,41 @@ +#include <stdio.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return 42; +} + +int compare_numbers (void *x1, void *x2) +{ + return 42; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort (strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort (numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-3.c b/20190128/loesung-3-20170206-3.c new file mode 100644 index 0000000000000000000000000000000000000000..35e323a06aa847f3e4ceb07874064c5607a3d35d --- /dev/null +++ b/20190128/loesung-3-20170206-3.c @@ -0,0 +1,41 @@ +#include <stdio.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return 42; +} + +int compare_numbers (void *x1, void *x2) +{ + return 42; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort ((void **) strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort ((void **) numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-4.c b/20190128/loesung-3-20170206-4.c new file mode 100644 index 0000000000000000000000000000000000000000..7d5cd5aab8f7d9346ad3b211302307d60bd58c59 --- /dev/null +++ b/20190128/loesung-3-20170206-4.c @@ -0,0 +1,42 @@ +#include <stdio.h> +#include <string.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return strcmp (x1, x2); +} + +int compare_numbers (void *x1, void *x2) +{ + return 42; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort ((void **) strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort ((void **) numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-5.c b/20190128/loesung-3-20170206-5.c new file mode 100644 index 0000000000000000000000000000000000000000..357e483652ef4227704ead580d9313df40dae9d3 --- /dev/null +++ b/20190128/loesung-3-20170206-5.c @@ -0,0 +1,45 @@ +#include <stdio.h> +#include <string.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return strcmp (x1, x2); +} + +int compare_numbers (void *x1, void *x2) +{ + if (*x2 < *x1) + return 1; + else + return 0; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort ((void **) strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort ((void **) numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-6.c b/20190128/loesung-3-20170206-6.c new file mode 100644 index 0000000000000000000000000000000000000000..822959430613390f70348dec21244b7c7c62ef0e --- /dev/null +++ b/20190128/loesung-3-20170206-6.c @@ -0,0 +1,45 @@ +#include <stdio.h> +#include <string.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return strcmp (x1, x2); +} + +int compare_numbers (int *x1, int *x2) +{ + if (*x2 < *x1) + return 1; + else + return 0; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort ((void **) strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort ((void **) numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-7.c b/20190128/loesung-3-20170206-7.c new file mode 100644 index 0000000000000000000000000000000000000000..35b3a858787d3a00cbfcb705b3e7a1c929ce9662 --- /dev/null +++ b/20190128/loesung-3-20170206-7.c @@ -0,0 +1,47 @@ +#include <stdio.h> +#include <string.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return strcmp (x1, x2); +} + +int compare_numbers (void *x1, void *x2) +{ + int *y1 = x1; + int *y2 = x2; + if (*y2 < *y1) + return 1; + else + return 0; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort ((void **) strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort ((void **) numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-8.c b/20190128/loesung-3-20170206-8.c new file mode 100644 index 0000000000000000000000000000000000000000..4070c305093ab6c4078c836a10d9914ed748f605 --- /dev/null +++ b/20190128/loesung-3-20170206-8.c @@ -0,0 +1,47 @@ +#include <stdio.h> +#include <string.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return strcmp (x1, x2); +} + +int compare_numbers (void *x1, void *x2) +{ + int *y1 = (int *) x1; + int *y2 = (int *) x2; + if (*y2 < *y1) + return 1; + else + return 0; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort ((void **) strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort ((void **) numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +} diff --git a/20190128/loesung-3-20170206-9.c b/20190128/loesung-3-20170206-9.c new file mode 100644 index 0000000000000000000000000000000000000000..ef902f3f34aa7ebaf0deb227c1b8905ea9f197db --- /dev/null +++ b/20190128/loesung-3-20170206-9.c @@ -0,0 +1,45 @@ +#include <stdio.h> +#include <string.h> + +void sort (void **data, int (*compare) (void *x1, void *x2)) +{ + for (int i = 0; data[i]; i++) + for (int j = i + 1; data[j]; j++) + if (compare (data[i], data[j]) > 0) + { + void *tmp = data[i]; + data[i] = data[j]; + data[j] = tmp; + } +} + +int compare_strings (void *x1, void *x2) +{ + return strcmp (x1, x2); +} + +int compare_numbers (void *x1, void *x2) +{ + if (*(int *) x2 < *(int *) x1) + return 1; + else + return 0; +} + +int main (void) +{ + char *strings[] = { "Thomas", "Dora", "Konrad", "Adalbert", "Sophie", NULL }; + sort ((void **) strings, compare_strings); + for (int i = 0; strings[i]; i++) + printf ("%s\n", strings[i]); + + printf ("\n"); + + int two = 2, ten = 10, zero = 0, three = 3, one = 1; + int *numbers[] = { &two, &ten, &zero, &three, &one, NULL }; + sort ((void **) numbers, compare_numbers); + for (int i = 0; numbers[i]; i++) + printf ("%d\n", *numbers[i]); + + return 0; +}