From 5c63ff41a51771b14f643dd78623392e5bba8f6c Mon Sep 17 00:00:00 2001
From: Peter Gerwinski <peter.gerwinski@hs-bochum.de>
Date: Mon, 5 Jun 2023 16:31:05 +0200
Subject: [PATCH] =?UTF-8?q?Weitere=20Beispiele:=20C-Array=20zur=C3=BCckgeb?=
 =?UTF-8?q?en,=205.6.2023?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 20230605/array-param-06.c | 30 ++++++++++++++++++++++++++++++
 20230605/array-param-07.c | 37 +++++++++++++++++++++++++++++++++++++
 20230605/array-param-08.c | 37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 104 insertions(+)
 create mode 100644 20230605/array-param-06.c
 create mode 100644 20230605/array-param-07.c
 create mode 100644 20230605/array-param-08.c

diff --git a/20230605/array-param-06.c b/20230605/array-param-06.c
new file mode 100644
index 0000000..f3f08ff
--- /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 0000000..0783eac
--- /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 0000000..551620e
--- /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;
+}
-- 
GitLab