Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

C-Kurs/Arrayuebergabe: Unterschied zwischen den Versionen

(nion - eine aufgabe konzipiert, musterlösung liegt bereit)
 
K (verschob „Ckurs/Arrayuebergabe“ nach „C-Kurs/Arrayuebergabe“)
 
(8 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=== Aufgabenstellung ===
 
=== Aufgabenstellung ===
Schreibe ein Programm, per Konsolenoption die Größe eines Arrays für Integer-Werte angegeben bekommt. Das Programm soll anschließend
+
Schreibe ein Programm, das per Kommandozeilenparameter die Größe eines Arrays für Integer-Werte übergeben bekommt. Das Programm soll anschließend
Speicher auf dem Heap allozieren und diesen als Array verwenden, um Integer-Werte zu speichern. In diesem Array soll anschließend der Größte Wert gefunden und angezeigt werden.
+
Speicher auf dem Heap allozieren und diesen als Array verwenden, um vom Benutzer einzugebende Integer-Werte darin zu speichern. In diesem Array soll anschließend der größte Wert gefunden und angezeigt werden.
  
 
Vorgehensweise
 
Vorgehensweise
# Lese das erste Kommandozeilenargument und alloziere einen entsprechend Großen Buffer
+
# Werte das erste Kommandozeilenargument aus und alloziere einen entsprechend großen Speicherblock
# Achte dabei möglichst auf Fehlerbehandlung bei falschen Größen
+
# Achte dabei möglichst auf Fehlerbehandlung bei ungültigen Angaben
# Lese n Integer-Werte von der Standardeingabe und speicher diese im vorher allozierten Buffer
+
# Lese n Integer-Werte von der Standardeingabe und speichere diese im vorher allozierten Array
# Übergebe das Array an eine Funktion find_max, die den größten Wert zurückgeben soll
+
# Übergebe das Array an eine Funktion <code>find_max</code>, die den größten Wert zurückgeben soll
# Suche den maximalen Wert mit Pointerarithmetik (keine direkte Indexaddressierung bei Vergleichen)
+
# Implementiere die Funktion <code>find_max</code> zur Suche nach dem maximalen Wert unter Verwendung von Pointerarithmetik (also keine direkte Indexaddressierung bei Vergleichen)
  
Achtung: Sinn der Aufgabe ist das Verinnerlichen von Pointern, ihr könnt in C nicht wie in anderen Sprachen einfach ein Array
+
Achtung: Sinn der Aufgabe ist das Verinnerlichen des Zusammenhangs zwischen Pointern und Arrays, deshalb solltet ihr das Array als Pointer übergeben. Das ist besonders wichtig, wenn ihr Werte in dem Array modifzieren oder ein Array zurückgeben wollt (das geht in C nämlich nicht).
als Argument übergeben, stattdessen müsst ihr auf Pointer zurückgreifen.
 

Aktuelle Version vom 5. März 2013, 17:37 Uhr

Aufgabenstellung

Schreibe ein Programm, das per Kommandozeilenparameter die Größe eines Arrays für Integer-Werte übergeben bekommt. Das Programm soll anschließend Speicher auf dem Heap allozieren und diesen als Array verwenden, um vom Benutzer einzugebende Integer-Werte darin zu speichern. In diesem Array soll anschließend der größte Wert gefunden und angezeigt werden.

Vorgehensweise

  1. Werte das erste Kommandozeilenargument aus und alloziere einen entsprechend großen Speicherblock
  2. Achte dabei möglichst auf Fehlerbehandlung bei ungültigen Angaben
  3. Lese n Integer-Werte von der Standardeingabe und speichere diese im vorher allozierten Array
  4. Übergebe das Array an eine Funktion find_max, die den größten Wert zurückgeben soll
  5. Implementiere die Funktion find_max zur Suche nach dem maximalen Wert unter Verwendung von Pointerarithmetik (also keine direkte Indexaddressierung bei Vergleichen)

Achtung: Sinn der Aufgabe ist das Verinnerlichen des Zusammenhangs zwischen Pointern und Arrays, deshalb solltet ihr das Array als Pointer übergeben. Das ist besonders wichtig, wenn ihr Werte in dem Array modifzieren oder ein Array zurückgeben wollt (das geht in C nämlich nicht).