INFORMATIK I
Übung 5 : Arrays und Strings
25. März 2015
Daniel Hentzen
dhentzen@student.ethz.ch

Übung 4 : Logische Ausdrücke und Verzweigungen
Aufgabe 2 : Verzweigung I
Aufgabe 3 : Verzweigung II
Aufgabe 4 : Buchstaben Test

Theorie
- Arrays
- 1-dimensional
- 2-dimensional
- C-Strings
1D - Arrays
Wiederholung
<type> <name>[<number of elements>]
int lotto[6] // "Liste" von 6 int
- array = Variable, die viele Werte eines gleichen Typs speichert
- eine Art "Liste" / "Vektor"
- Achtung : Anzahl Elemente muss eine Konstante sein !
lotto[3] // 4. Element!
- Zugriff auf einzelne Elemente durch [ ]
- 0 - (Grösse-1)
- erstes Element : lotto[0]
- zweites Element : lotto[1]
- ...
- letztes Element : lotto[5]
int lotto[6];
lotto[0] = 5;
lotto[1] = 12;
lotto[2] = 13;
lotto[3] = 28;
lotto[4] = 32;
lotto[5] = 43;
Initialisierung
- bei der Definition mit { } :
int a[5] = {2,13,21,35,4};
- einzeln :
int b[3];
b[0] = 7;
- partielle Initialisierung :
int c[5] = {1,2};
(restliche Elemente werden zu 0 gesetzt)
- ohne Grössenangabe :
int d[] = {11,34,2};
(Werte müssen sofort initialisiert werden, Compiler ermittelt Grösse)
Achtung !
int zahl = d[5]; // runtime error
keine Fehlermeldung beim Überschreiten der Grösse
--> runtime error
--> fehlerhaftes Programm
Beispiel

2D - Arrays
<type> <name>[Zeilen][Spalten]
Zeilen zuerst, S palten s päter
int b[2][3] = {{1,2,3},{4,5,6}};
Zuweisung :
b[1][2] = 12;
"2. Element in der 1.Zeile = 12"
Achtung !!
2. Grösse MUSS angegeben werden
int c[][] = ...; // nicht möglich
int c[5][] = ...; // nicht möglich
int c[][3] = ...; // möglich
Beispiel
int myArray[][4] = {{236,189,189,0},{236,80,189,189},{236,0,189,80},{236, 189,189,80}}
C-Strings
- string = array von chars
- Wort, Satz,...
Achtung : '\0' als letztes Element !
char name[4] = {'H','a','n','s'}; // invalid
char name[5] = {'H','a','n','s','\0'}; // valid
oder einfacher
char name[] = "Hans";
Achtung :
char a = 'x'; // valid, char
char b = "y"; // invalid, string
Eingabe mit cin / getline
char name[100];
cin >> name; // stoppt beim ersten Leerzeichen / ENTER
char name[100];
cin.getline(name,100); // liest ganze Zeile ein
Ausgabe mit cout
cout << name; // nur für c-string arrays !!!
Nützliche Funktionen
- Gross : toupper (<ctype.h>)
char str[] = "abc";
str[0] = toupper(str[0]); //str = Abc
- Kopieren : strcpy (<cstring>)
strcpy(Ziel, Quelle)
char str[] = "abc";
char str2[80];
strcpy(str2,str); // str2 = abc
- Anfügen : strcat (<cstring>)
strcat(Ziel, Quelle)
char str[] = "abc";
strcat(str,"def"); // str = abcdef
- Länge : strlen (<cstring>)
char str[]="1234"
int n;
n = strlen(str); // n=4
--> Anzahl Charaktere im String (mit Leerzeichen !)
(ohne '\0' ! )
Übung 5 : Arrays und strings
Aufgabe 1 : Array Deklaration
Aufgabe 2 : Durchschnitt II
Aufgabe 3 : Arrays
Swap
- Zwischenspeichern : temporäre Variable benutzen
Aufgabe 4 : Zeichenketten
toupper
strcat
strlen
Aufgabe 5 : UNIX Benutzerrechte
Zugriffsrechte :
read
write
execute
Benutzergruppen :
owner
group
others
ls -l Datei : zeigt Rechte an
Aufbau :
drwxrwxrwx
-
d : Unterordner erlaubt
-
r : read erlaubt
-
w : write erlaubt
-
x : execute erlaubt
- 3 mal für user, group und others
- falls nicht erlaubt : -
Beispiel
drwxr-xr-x
- Unterordner erlaubt
- user : read, write, execute erlaubt
- group : read, execute erlaubt
- others : execute erlaubt
Festlegen
chmod u=rwx <filename>
chmod g=rx <filename>
chmod o=rx <filename>
oder : Oktalzahlen
4*r + 2*w + 1*x (r,w,x = 0 / 1)
Beispiel :
chmod 755 <filename>
user : 4*1 + 2*1 + 1*1 = 7
group : 4*1 + 2*0 + 1*1 = 5
others : 4*1 + 2*0 + 1*1 = 5
Übung 5 : Arrays und strings
By Daniel Hentzen
Übung 5 : Arrays und strings
- 578