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öglichint c[5][] = ...; // nicht möglichint 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, charchar 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