Zurück zur Startseite der Übungen

 

Nachstehend finden Sie einige ergänzende Übungen zum Themenbereich Arrays, bei denen auch Lösungen bzw. Lösungshinweise gegeben werden, die durch Aufklappen der entsprechenden Untersektion eingesehen werden können.
Viel Spaß und Erfolg beim Üben!

Übung A-1: Ein- und Ausgabe eines Arrays von int-Werten

Deklarieren und definieren Sie bitte ein int-Array der Größe 5. Lassen Sie die Werte mit Hilfe einer (for-)Schleife (Iteration) von Tastatur in das Array einlesen (mit scanf()) und anschließend mittels einer entsprechenden Schleife wieder auf die Konsole ausgeben.

Lösungshinweise / Lösungsvorschlag hierzu (Zum Öffnen und später wieder Schließen auf diese Zeile klicken.)

Nachstehend finden Sie ein vollständiges kleines Programm zu dieser Aufgabenstellung.

/* Elementare Ein- und Ausgabe eines int-Arrays */

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[5];
    int i;

    for (i=0; i<5; i++)
    {
        printf("Bitte den Wert zum Index %d eingeben: ",i);
        scanf("%d",&a[i]);
    }

    for (i=0; i<5; i++)
    {
        printf("a[%d] = %d\n",i,a[i]);
    }

    return EXIT_SUCCESS;
}
            
      

Übung A-2: float-Arrays

Was ist bei dem Programm der vorhergehenden Aufgabenstellung zu ändern, wenn wir nun mit einem Array von 10 float-Werten arbeiten wollen?
Schreiben Sie bitte das entsprechende Programm (Ein- und Ausgabe der 10 float-Werte).

Lösungshinweise / Lösungsvorschlag hierzu

Anzupassen sind die Array-Dimensionierung (10 statt 5) und die Anpassung von int auf float, die auch bei den Formatierungen in printf() und scanf() zu berücksichtigen ist.

Wollen Sie den vollständigen Programm-Code wirklich sehen? Dann klappen Sie ihn gerne auf...
/* Elementare Ein- und Ausgabe eines float-Arrays */


#include <stdio.h>
#include <stdlib.h>

int main()
{
    float a[10];
    int i;

    for (i=0; i<10; i++)
    {
        printf("Bitte den Wert zum Index %d eingeben: ",i);
        scanf("%f",&a[i]);
    }

    for (i=0; i<10; i++)
    {
        printf("a[%d] = %f\n",i,a[i]);
    }

    return EXIT_SUCCESS;
}
            
      
Anmerkung: Sie haben bei dem Übergang von A-1 zu A-2 vermutlich bemerkt, dass es lästig und auch fehleranfällig ist, im Code zu suchen, wo die Zahl 5 (und im Allgemeinen dann auch mit der entsprechenden Bedeutung der Array-Größe) vorkommt und diese durch 10 zu ersetzen.
Darum nachstehend noch einmal der mit einer Präprozessor-Konstanten leicht umformulierte Code.
/* Elementare Ein- und Ausgabe eines float-Arrays */


#include <stdio.h>
#include <stdlib.h>

#define GROESSE 10

int main()
{
    float a[GROESSE];
    int i;

    for (i=0; i < GROESSE; i++)
    {
        printf("Bitte den Wert zum Index %d eingeben: ",i);
        scanf("%f",&a[i]);
    }

    for (i=0; i < GROESSE; i++)
    {
        printf("a[%d] = %f\n",i,a[i]);
    }

    return EXIT_SUCCESS;
}
            
      

Übung A-3: Arrays befüllen

Betrachten wir der Einfachheit halber wieder int-Arrays.

  1. Deklarieren Sie bitte zwei Arrays a und b vom Basistyp int und mit der Größe 5; deklarieren und definieren Sie bitte ein drittes Array c vom Basistyp int der Größe 10.
  2. Schreiben Sie nun die Funktion eingabe(), die ein int-Array von Tastatur einliest.
    Sie dürfen selbstverständlich den bei den vorherigen Aufgaben geschriebenen Code verwenden, nur soll dieser jetzt in eine Funktion aufgenommen werden.
  3. Sie ahnen es? Implementieren Sie bitte ebenfalls die Funktion ausgabe(), die die Werte eines solchen int-Arrays auf die Konsole ausgibt.
Kleine Hilfestellung: da die Arrays verschiedene Größen besitzen, müssen die Funktionen jeweils die Größe des Arrays als separaten Parameter übergeben bekommen. Korrekte Aufrufbeispiele sind nachfolgend dargestellt.
	eingabe(a,5);
	eingabe(c,10);
	ausgabe(a,5);
	ausgabe(c,10);
	

Lösungshinweise / Lösungsvorschlag hierzu
1. Lösung zur Deklaration und Definition
		int a[5], b[5];
		int c[10];
		
2. Eine mögliche Eingabe-Funktion
		void eingabe(int array[], int groesse)
		{
		   int i;
		   for (i=0; i < groesse; i++)
		   {
		      printf("Wert bei Index %d: ",i);
		      scanf("%d", &array[i]);
		   }
		}
		
3. Eine mögliche Ausgabe-Funktion
		void ausgabe(int array[], int groesse)
		{
		   int i;
		   for (i=0; i < groesse; i++)
		   {
		      printf("Wert bei Index %d: %d\n",i,array[i]);
		   }
		}
		

Übung A-4: Einige Berechnungen

Wir betrachten Arrays von float-Werten. Hierzu sollen die folgenden Funktionen geschrieben werden.

  1. Die Funktion summe() ermittelt die Summe aller im als Parameter übergebenen Array und liefert diesen Wert per return zurück.
  2. Die Funktionen minimum() und maximum() geben jeweils den kleinsten bzw. größten Wert im Array mittels return zurück.
  3. Die Funktion quadratsumme() liefert die Summe aller Quadrate der Werte in dem Array zurück.
    (Für die Array-Werte { 2, 3, 4 } wäre dies der Wert 2*2+3*3+4*4 = 29. - Eine solche Quadratsumme werden Sie vermutlich später in der Vorlesung Statistik benötigen.)
Lösungshinweise / Lösungsvorschlag hierzu

Nachstehend der Code beispielhafter Funktionen.

float summe(float array[], int groesse)
{
   float sum = 0;
   int i;
   
   for (i=0; i < groesse; i++)
   {
      sum = sum + array[i];    // oder auch kuerzer moeglich:   sum += array[i];
   }
   
   return sum;
}

float minimum(float array[], int groesse)
{
   float tempmin = array[0];  // Unser erster Kandidat f. d. Minimum
   int i;
   
   for (i=1; i < groesse; i++)
   {
      if (array[i] < tempmin)   // Finden wir einen kleineren Wert im Array,
      {                         // dann wird dieser zu unserem Kandidaten
         tempmin = array[i];
      }
   }
   
   return tempmin;
   
   return sum;
}

float quadratsumme(float array[], int groesse)
{
   float qsum = 0;
   int i;
   
   for (i=0; i < groesse; i++)
   {
      qsum = qsum + array[i] * array[i];    // oder auch kuerzer moeglich:   sum += array[i] * array[i];
   }
   
   return qsum;
}

		

Übung A-5: Inhaltlicher Vergleich zweier Arrays

Deklarieren und definieren Sie bitte zwei int-Arrays der Größe 10.
Schreiben Sie bitte eine Funktion equals(), die zwei int-Arrays überprüft, ob sie inhaltlich gleich sind, also an den korrespondierenden Stellen jeweils dieselben Werte stehen. Im Falle der Gleichheit soll die Funktion den Wert 1 (im Sinne von true) zurückliefern, andernfalls den Wert 0 (false).
Ein Aufruf dieser Funktion kann wie folgt aussehen.

	int a[10] = { 0 }, b[10] = { 0 };  // Zur Erinnerung: hiermit werden die Arrays komplett auf 0 initialisiert
	
	// ...
	
	if (equals(a,b,10))
	{
	   printf("Die beiden Arrays sind gleich!\n");
	}
        else
	{
	   printf("Die beiden Arrays sind nicht gleich!\n");
	}
	
Lösungshinweise / Lösungsvorschlag hierzu

Nachstehend der Code einer solchen equals()-Funktion, wenn Sie die Sektion aufklappen.
Die Grundidee ist, stellenweise durch die beiden Arrays zu gehen und zu vergleichen; wird eine Ungleichheit gefunden, ist bereits klar, dass die Arrays ungleich sind und es kann mit dem Wert 0 beendet werden (return 0); kommt man nach der Vergleichsschleife an, dann sind die beiden Arrays gleich (return 1).

Wollen Sie den Code sehen? (Dann bitte hier anklicken.)
int equals(int array1[], int array2[], int groesse)
{
   int i;
   for (i=0; i < groesse; i++)
   {
      if (array1[i] != array2[i])
      {
         return 0;
      }
   }
   return 1;
}
      


© 2020-2023 Peter Baeumle-Courth