Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WS12/13 -- Programmierpraktikum C++ | 03: Arrays

Jan Wieners
October 28, 2012

WS12/13 -- Programmierpraktikum C++ | 03: Arrays

Jan Wieners

October 28, 2012
Tweet

More Decks by Jan Wieners

Other Decks in Education

Transcript

  1. Universität zu Köln. Historisch-Kulturwissenschaftliche Informationsverarbeitung Jan G. Wieners // [email protected]

    Programmierpraktikum C++ Wintersemester 2012 / 2013 29. Oktober 2012 – Arrays
  2. Anstatt: int variable=23; if(variable == 15) cout << "A"; else

    if(variable == 16) cout << "B"; else if(variable == 17) cout << "C"; else cout << "D"; Können wir schreiben: Fallunterscheidung: switch / case switch(variable) { case 15: cout << "A"; break; case 16: cout << "B"; break; case 17: cout << "C"; break; default: cout << "D"; break; }
  3.  char zahl  „Ich benötige genau ein Zeichen (char),

    das ich unter der Bezeichnung „zahl“ verwenden möchte.  char zahl[10]  „Ich benötige genau zehn Zeichen (char), die ich unter der Bezeichnung „zahl“ verwenden möchte.“ Arrays
  4. Zu groß dimensionierte Arrays  Don‘t try this at home:

    #include <iostream> using namespace std; int main() { for(int i=0; i <= 1000000; i++) char *zahl=new char[1000000]; return 0; } Arrays
  5. Zu klein dimensionierte Arrays  „Bei komplexeren Programmen führen zu

    klein dimensionierte Arrays fast immer zum "Absturz" des Programmes und bei wenig professionellen Betriebssystemen, wie den Microsoftprodukten, gelegentlich zur Notwendigkeit, den Rechner neu zu booten.“ (http://www.hki.uni-koeln.de/node/9528) Arrays
  6. Zugriff auf Elemente des Arrays  variable[10]  Variable[0] 

    variable[1]  Variable[2]  variable[3]  Variable[4]  Variable[5]  Variable[6]  Variable[7]  Variable[8]  Variable[9]  variable[i]  Zugriff auf das i-te Element des Arrays „variable“ Arrays
  7. Zeichenketten (char *)  Arrays, die Zeichenketten enthalten  Zeichenketten

    / Strings  Nach dem letzten Zeichen: ‘\0‘ Arrays
  8.  Postinkrement variable++; Analog zu: variable = variable + 1;

    Analog zu: variable += 1;  Postdekrement variable--; Analog zu: variable = variable – 1; Analog zu: variable -= 1;  Präinkrement ++variable;  Prädekrement --variable;  Weiteres: variable *= 1;  variable = variable * 1; variable /= 1;  variable = variable / 1; Inkrement / Dekrement
  9. *

  10. Aufgabe 1 Mehrere Werte lassen sich einem Array wie folgend

    zuweisen: int baseArray[]={0, 23, 8, 17, 25}; Initialisieren Sie die Variable baseArray wie oben angegeben; ergänzen Sie den Quelltext um die Variable targetArray, die fünf ganzzahlige Werte aufnehmen kann. Sortieren Sie baseArray aufsteigend, indem Sie die Werte manuell von baseArray nach targetArray transferieren. Generieren Sie die Ausgabe wie auf dem Screenshot dargestellt. Übungsaufgaben
  11. Aufgabe 2 Sortieren Sie das folgende Array unter Verwendung des

    Bubble Sort Algorithmus: int baseArray[]={0, 23, 8, 17, 25, 17, 3, 7, 6, 5};  http://de.wikipedia.org/wiki/Bubblesort Übungsaufgaben Tipp: Sie müssen nicht immer das Rad neu erfinden: http://de.wikibooks.org/wiki/Algorithmen_und_Datenstrukturen_in_C/_Bubblesort
  12. Aufgabe 3: ASCII Verschlüsselung Die „Cäsar“-Verschlüsselung ist eine sehr einfache

    Art der Codierung: Um die einzelnen Zeichen eines Eingabetextes zu verschlüsseln, werden alle Zeichen um n Positionen verschoben. Erstellen Sie eine Konsolenanwendung, die einen String einliest, die einzelnen Zeichen der Zeichenkette um n Positionen verschiebt und das Ergebnis der Verschlüsselung ausgibt. Übungsaufgaben
  13. Aufgabe 4 Erstellen Sie ein neues Projekt mit folgenden Variablendefinitionen:

     char codeArray[38]="tckqadvrbfgipcvs/*takngkflbegffpdagke";  char toDecodeOperators[]="-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+";  char toDecodeFactors[]="12312312312312312312312312312312312312";  char outputArray[38]; Im Array codeArray wurde eine Nachricht verschlüsselt. Die decodierte Version des Zeichens erhalten Sie, indem Sie den Zahlenwert (ASCII) jedes Zeichens mit dem entsprechenden Faktor in toDecodeFactors addieren oder subtrahieren (toDecodeOperators). Ein Beispiel: Um das erste Zeichen in codeArray zu decodieren, wird für den ersten ASCII-Wert des Zeichens (‘t‘ = 116) geprüft, ob der Wert ‘1‘ in toDecodeFactors subtrahiert oder addiert wird. toDecodeOperators an Position 0 (toDecodeOperators[0]) besagt, dass von dem ‘t‘ mit dem Zahlenwert eine 1 (toDecodeFactors[0]) abgezogen (toDecodeOperators[0]) werden muss, um das verschlüsselte Zeichen ‘s‘ zu erhalten. Übungsaufgaben
  14. /