diff --git a/20230605/array-param-06.c b/20230605/array-param-06.c new file mode 100644 index 0000000000000000000000000000000000000000..f3f08ff948a690c8453f8e4462e8e30948bf46ad --- /dev/null +++ b/20230605/array-param-06.c @@ -0,0 +1,30 @@ +#include <stdio.h> +#include <stdlib.h> + +int read_something (int **a) +{ + int n; + printf ("Wie viele Zahlen? "); + scanf ("%d", &n); + int *b = malloc (n * sizeof (int)); + for (int i = 0; i < n; i++) + { + printf ("%d. Zahl: ", i + 1); + scanf ("%d", b + i); /* andere Schreibweise: &a[i] */ + } + if (a) + *a = b; + return n; +} + +int main (void) +{ + int *x = NULL; + int numbers_read = read_something (&x); + printf ("%d eingegebene Zahlen:", numbers_read); + for (int i = 0; i < numbers_read; i++) + printf (" %d", x[i]); + printf ("\n"); + free (x); + return 0; +} diff --git a/20230605/array-param-07.c b/20230605/array-param-07.c new file mode 100644 index 0000000000000000000000000000000000000000..0783eac4960f5907ec2697a57c954330b63b92f0 --- /dev/null +++ b/20230605/array-param-07.c @@ -0,0 +1,37 @@ +#include <stdio.h> +#include <stdlib.h> + +int read_something (int **a) +{ + int i = 0; + printf ("Zum Beenden: -1 eingeben\n"); + int n = 1; + int *b = malloc (n * sizeof (int)); + do + { + if (i + 1 >= n) + { + n *= 2; + b = realloc (b, n * sizeof (int)); + } + printf ("%d. Zahl: ", i + 1); + scanf ("%d", b + i); /* andere Schreibweise: &a[i] */ + i++; + } + while (b[i - 1] >= 0); + if (a) + *a = b; + return n; +} + +int main (void) +{ + int *x = NULL; + int numbers_read = read_something (&x); + printf ("%d eingegebene Zahlen:", numbers_read); + for (int i = 0; i < numbers_read; i++) + printf (" %d", x[i]); + printf ("\n"); + free (x); + return 0; +} diff --git a/20230605/array-param-08.c b/20230605/array-param-08.c new file mode 100644 index 0000000000000000000000000000000000000000..551620e756f3444f4ed17f286fc5aa5d845df3ae --- /dev/null +++ b/20230605/array-param-08.c @@ -0,0 +1,37 @@ +#include <stdio.h> +#include <stdlib.h> + +int read_something (int **a) +{ + int i = 0; + printf ("Zum Beenden: -1 eingeben\n"); + int n = 1; + int *b = malloc (n * sizeof (int)); + do + { + if (i + 1 >= n) + { + n *= 2; + b = realloc (b, n * sizeof (int)); + } + printf ("%d. Zahl: ", i + 1); + scanf ("%d", b + i); /* andere Schreibweise: &a[i] */ + i++; + } + while (b[i - 1] >= 0); + if (a) + *a = b; + return i - 1; +} + +int main (void) +{ + int *x = NULL; + int numbers_read = read_something (&x); + printf ("%d eingegebene Zahlen:", numbers_read); + for (int i = 0; i < numbers_read; i++) + printf (" %d", x[i]); + printf ("\n"); + free (x); + return 0; +}