• Keine Ergebnisse gefunden

Aufgabe 2: Zeichenketten und Zeiger - strcpy()

N/A
N/A
Protected

Academic year: 2021

Aktie "Aufgabe 2: Zeichenketten und Zeiger - strcpy()"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Übungen zur Vorlesung

GRUNDLAGEN DERINFORMATIKI Studiengang Elektrotechnik

WS 02/03

AG Betriebssysteme FB3 Kirsten Berkenkötter Ausgabe: 3.12.2002 Besprechung: 5.12./12.12.2002 Abgabe: 12.12.2002

Übungszettel 4

Aufgabe 1: Parameter und Zeiger

Schreibe zwei Funktionen void tausche(int a, int b)und void tausche2(int *a, int *b)

in denen die beiden Parameter a und b vertauscht werden und rufe sie aus dem Hauptpro- gramm auf. Gib jeweils vor und nach dem Aufruf die Werte der beiden Zahlen aus. Was pas- siert? Erläutere das Verhalten der Funktionen.

Aufgabe 2: Zeichenketten und Zeiger - strcpy()

In der C-Bibliothek<string.h>gibt es eine Funktionstrcpy(), mit der man einen String kopieren kann. Diese Funktion soll nun einmal selbst geschrieben werden.

Sie soll folgendes Aussehen haben:

char *meinstrcpy(char *ziel, char *quelle)

Dabei geschieht folgendes: die Funktion kopiert die Zeichenkette, auf die der Zeiger quelle zeigt, an die Stelle, auf die ziel zeigt (auch das Endzeichen \0). Dabei dürfen sich die Zei- chenketten quelle und ziel nicht überlappen und ziel muss genügend Platz bereitstellen. Der Rückgabewert ist ein Zeiger aufziel.

Aufgabe 3: Zeichenketten und Zeiger - strchr()

In der C-Bibliothek<string.h>gibt es eine Funktionstrchr(), mit deren Hilfe man einen Buch- staben in einem String suchen kann. Diese Funktion soll selbst programmiert werden:

char *meinstrchr(char *string, int c)

Die Funktion gibt den Zeiger auf das erste Vorkommen des Zeichens c in der Zeichenkette stringzurück. Wird das Zeichen nicht gefunden, wirdNULL(leerer Zeiger) zurückgegeben.

Aufgabe 4: Arrays und Zeiger - Zugriff auf Arrayelemente

Schreibe eine Funktion

void quadriere(int *array, int laenge)

(2)

in der jedes Element des übergebenen Arrays durch sein Quadrat ersetzt wird.

Definiere im Hauptprogramm ein Array mit zehn beliebigen Integer-Zahlen und rufe die Funk- tionquadriereauf. Gib vorher und nachher die Elemente des Arrays auf dem Bildschirm aus.

Achtung: In dieser Aufgabe sollen ausschließlich Zeigeroperationen verwendet werden!

Aufgabe 5: Arrays und Zeiger - Einlesen und Vergleichen von Werten

Schreibt ein Programm, das vom Benutzer nacheinander zehn Integer-Zahlen abfragt. Nach- dem er das getan hat, soll das Programm erneut zehn Zahlen abfragen und dann ausgeben, welche Zahlen sich gegenüber der ersten Eingabe geändert haben. Wenn also beim ersten Mal (7, 9, -3, 5, 5, 42, 0, 1, -100, 2) und beim zweiten Mal (7, 11, -3, 5, 5, -1, 0, 1, -100, 2) eingegeben wurden, dann soll ausgegeben werden, dass sich an der 2. und 6. Stelle etwas geändert hat.

Damit das Programm leichter zu schreiben ist, sollen auch in der ersten Runde bereits die

’Unterschiede’ ermittelt werden. Hier sollen als Vergleich die Zahlen (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) verwendet werden. Nach der Ausgabe der Unterschiede soll das Programm fragen, ob noch eine Runde durchgeführt werden soll. Wenn die Antwort j(für ja) lautet, soll weitergemacht werden, in allen anderen Fällen nicht.

Das Programm soll auf folgende Weise implementiert werden: legt zunächst zwei Integer- Arrays mit 10 Zahlen an, ein Eingabe-Array und ein Vergleichs-Array. Dieses wird zu Anfang mit Nullen vorbelegt. Nach dem Ende einer Runde vertauschen die Arrays ihre Rolle, das Eingabe-Array wird zum neuen Vergleichs-Array und umgekehrt.

Das Vertauschen wird durch den Einsatz von Zeigern gelöst. Die Zahlen sollen nicht direkt in das Array eingeben werden, sondern über einen Zeiger, der auf das jeweilige Eingabe-Array zeigt. Verglichen wird ebenfalls über einen Zeiger auf das Vegleichs-Array. Am Ende einer Runde können dann die Rollen der Arrays vertauscht werden, indem die Zeiger für die Ein- gabe und das Vergleichen (mit Hilfe eines Hilfs-Zeigers!) auf das jeweils andere Array gelegt werden.

Referenzen

ÄHNLICHE DOKUMENTE

Am Ende der ¨ Ubung mag sich der eine oder andere fragen, was man denn nun eigentlich von Zeigern hat, denn Zeiger sind erst einmal nur kompliziert.. Die Antwort ist sehr einfach:

läuft durch die array Elemente setzt das erste array Element auf 500 setzt das zweite array Element auf 1000 setzt das dritte array Element auf 3000. setzt das vierte

Lege einen speziellen Speicherbereich für jeden Aufruf einer Funktion an. In sequentiellen Programmiersprachen können diese Speicherbereiche auf dem Keller

Oft ist zu dem Zeitpunkt, an dem ein Programm geschrieben wird, noch nicht klar, wieviele Daten zu verwalten sind: sollen 100 B¨ucher oder 1.000.000 B¨ucher gespeichert werden.. Da

Speicher wird explizit zur Laufzeit alloziert und freigegeben Dynamische Allokation ist notwendig, wenn. • der Speicherbedarf zur Compile-Zeit

Ieber l3egriUe. Tstbedto- llowüel; Hendel5Ve.rhbr %Wisdlen dar Bundes:e.publlk und de.r TS&lt;hecboslowaket für die Zelt vom 1. I.. 5.2 Olfentlic:be Bekanntmachung

Mitglieder des Beirates Vertreter Anschrift Ministerium für Umwelt,.. Landwirtschaft und Energie des Landes

Sie dienen einer Überwachung und ermöglichen eine qualitative und quantitative, mehr oder weniger spezifische Erfassung von Schadstoffen (z.B. Schadstoffgehalte wie