• Keine Ergebnisse gefunden

1 Aufgabe 1: Parameter und Zeiger

N/A
N/A
Protected

Academic year: 2021

Aktie "1 Aufgabe 1: Parameter und Zeiger"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Lösungen zur Vorlesung

GRUNDLAGEN DERINFORMATIKI Studiengang Elektrotechnik

WS 02/03

AG Betriebssysteme FB3 Kirsten Berkenkötter

Lösung Übungszettel 4

1 Aufgabe 1: Parameter und Zeiger

#include <stdio.h>

//erste Funktion, Parameter sind zwei Integer-Zahlen void tausche(int a, int b)

{

//Hilfvariable zum Tauschen int hilf;

//Zahlen vertauschen hilf = a;

a = b;

b = hilf;

}

//zweite Funktion, Parameter sind zwei Zeiger auf Integer-Zahlen void tausche2(int *a, int *b)

{

//Hilfsvariable zum Tauschen int hilf;

//Vertauschen hilf = *a;

*a = *b;

*b = hilf;

}

int main() {

//zwei Zahlen deklarieren und initialisieren int a = 5, b= 11;

//Zahlen ausgeben, mit erster Funktion ’tauschen’

//und nochmal ausgeben printf("a: %d b: %d\n", a, b);

tausche(a,b);

printf("a: %d b: %d\n", a, b);

//natürlich nichts passiert //a ist weiterhin 5 und b 11

(2)

//jetzt mit zweiter Funktion tauschen

//Achtung! Diesmal die Adressen übergeben!

tausche2(&a,&b);

printf("a: %d b: %d\n", a, b);

//diesmal klappt es //a ist 11 und b ist 5 }

2 Aufgabe 2: Zeichenketten und Zeiger - strcpy()

#include <stdio.h>

//Funktion zum Kopieren eines Strings auf einen anderen char *meinstrcpy(char *ziel, char *quelle)

{

//Ziel-String merken char *zielzeiger = ziel;

//Kopieren des Strings bis zum Ende do

{

//Schreiben der einzelnen Elemente des Strings

*zielzeiger++ = *quelle++;

}while (*quelle);

//Zeiger auf den Zielstring zurückgeben return ziel;

}

int main() {

//einen String zum Kopieren deklarieren und initialisieren char string[] = "hello";

//einen String, auf den kopiert werden soll, deklarieren //Wichtig: string als Array deklarieren und initialisieren, //damit genug Platz im Speicher reserviert wird!

char neuerstring[6]="";

char *ziel;

//Funktion zum Kopieren aufrufen ziel = meinstrcpy(neuerstring, string);

//kopierten String ausgeben printf("%s\n", ziel);

}

(3)

3 Aufgabe 3: Zeichenketten und Zeiger - strchr()

#include <stdio.h>

//Funktion zum Suchen des ersten Vorkommens eines Zeichens //in einem String

char *meinstrchr(char *string, int c) {

//Zeiger für den String char* stringzeiger = string;

//Suche das Zeichen (bis maximal zum Ende des Strings) do

{

//ist das Zeichen gefunden worden?

//wenn ja, gib den Zeiger auf das Zeichen zurück //wenn nein, vergleiche das nächste Zeichen im String if(*stringzeiger == c)

return stringzeiger;

stringzeiger++;

}

while (*stringzeiger);

//nicht gefunden (Schleife bis zum Ende durchgelaufen) //leeren Zeiger zurückgeben

return NULL;

}

int main() {

//einen String zum Suchen anlegen //ein Zeichen zum Suchen angeben

//einen Zeiger für den Rückgabewert der Funktion char string[20]= "Hello World";

char zeichen = ’r’;

char *erstesVorkommen;

//suche das erste Vorkommen des Zeichens im String erstesVorkommen = meinstrchr(string, zeichen);

//gib aus: die Adresse des Strings, die Adresse des //gefundenen Zeichens und das Zeichen selbst printf("%x\n", string);

printf("%x\n", erstesVorkommen);

printf("%c\n", *erstesVorkommen);

}

4 Aufgabe 4: Arrays und Zeiger - Zugriff auf Arrayelemente

#include <stdio.h>

(4)

//funktion zum quadrieren //erstes Parameter: Array

//zweiter Parameter: Länge des Arrays void quadriere(int *array, int laenge) {

//Zähler-Variable int i;

//jedes Element durch sein Quadrat ersetzen for(i=0; i < laenge; i++)

*(array+i) = *(array+i) * *(array+i);

}

int main() {

//ein Array deklarieren und initialisieren //eine Zähler-Variable

int array[10] = {1, 5, 4, 3, 18, 43, 2, 33, 10, 7};

int i;

//Array vor dem Aufruf der Funktion ausgeben for(i=0; i<10; i++)

printf("%4d ", *(array+i));

printf("\n");

//alle Elemente mit Hilfe der Funktion quadrieren quadriere(array, 10);

//Array nach dem Aufruf der Funktion ausgeben for(i=0; i<10; i++)

printf("%4d ", *(array+i));

printf("\n");

}

Referenzen

ÄHNLICHE DOKUMENTE

Frage: Muss man bei der Aufgabe die konkrete ASCII-Kodierung der einzelnen Zeichen selber in der ASCII-Tabelle nachschlagen oder kann das der Compiler dies erledigen?... Teil

Definiere einen eigenen Typ myCP sowie myCPP der ein Zeiger auf ein char bzw6. ein Zeiger auf ein Zeiger auf ein

Aufgabe : Umwandlung hexadezimaler Ziffern in die entsprechenden Zahlenwerte Eingabe : eine hexadezimale Ziffer. Ausgabe : eingegebene Ziffer und

Befehlsfolge, die Ergebnis berechnet und mit- tels return -Anweisung zur¨

Write a main program, which reads the vector x and its length n from the keyboard, sorts it with mergesort and prints to the screen the sorted vector.. Test your

Schreiben Sie dar¨ uber hinaus ein Hauptprogramm, in dem Sie den Vektor x und die L¨ ange n einlesen, bubblesort aufrufen und das Ergebnis ausgeben.. Wie groß ist der Aufwand

Daniel Plaumann Dimitri Manevich..

die etwa eine Woche Arbeitszeit beanspruchen soll, wird die Auswertung von Daten betont,.. die die Teilnehmenden in der Regel aus ihrem