*** Viel Erfolg! ***

Ähnliche Dokumente
Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

Ingenieurinformatik Diplom-FA (C-Programmierung)

Hochschule München, FK 03 FA SS Ingenieurinformatik

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

Wiederholung C-Programmierung

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Hochschule München, FK 03 SS Masterstudiengang Technische Berechnung und Simulation. Programmierung von CAx-Systemen Teil 1

Kapitel 7. Zusammengesetzte Datentypen, Vektoren, Zeichenketten

Praktikum Ingenieurinformatik. Termin 6. Mehrdimensionale Felder, Kurvendarstellung mit Excel

Praktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Praktikum Ingenieurinformatik. Termin 5. Felder, Kurvendarstellung mit Excel

Übungspaket 23 Mehrdimensionale Arrays

Welche Informatik-Kenntnisse bringen Sie mit?

Hochschule Niederrhein Einführung in die Programmierung Prof. Dr. Nitsche. Bachelor Informatik WS 2015/16 Blatt 3 Beispiellösung.

1 Vom Problem zum Programm

CEN1112 Labor Software-Entwicklung

GI Vektoren

Wiederholung C-Programmierung

Informatik Repetitorium SS Volker Jaedicke

Einführung in die Programmierung

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2

+ C - Array (Vektoren, Felder)

Kurze Einführung in die Programmiersprache C++ und in Root

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Kapitel 5. Datentypen und Operatoren

Klausur in Programmieren

Zahlen- und Buchstabencodierung. Zahlendarstellung

BKTM - Programmieren leicht gemacht.

6. Bearbeitung von Strings in C Bearbeitung von Strings in C

Erste Schritte der Programmierung in C

Einstieg in die Informatik mit Java

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Klausur in Programmieren

2 Einfache Rechnungen

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2

Praktikum Ingenieurinformatik. Termin 2. Mein erstes C-Programm

Programmieren in C Einführung

Programmierung mit C Zeiger

Programmieren in C / C++ Grundlagen C 2

Klausur C-Programmierung / / Klingebiel / 60 Minuten / 60 Punkte

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. Hochschule Darmstadt -Fachbereich Informatik-

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Klausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 13. April 2007, Uhr Bearbeitungszeit: 105 Minuten

Übungspaket 19 Programmieren eigener Funktionen

Dr. Monika Meiler. Inhalt

Einführung in die Programmierung (EPR)

"Einführung in die Programmierung" Krefeld, den 24. September 2013

Angewandte Mathematik und Programmierung

Die Programmiersprache C

Praktikum Ingenieurinformatik. Termin 1. Textdateien (ASCII, Unicode) Mein erstes C-Programm

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 1

3. Datentypen, Ausdrücke und Operatoren

Elementare Datentypen in C++

Übungen zur Vorlesung Computergrundlagen WS 2008/09 Fakultät Physik, Universität Stuttgart Jens Harting, Martin Hecht, Bibhu Biswal Blatt 14

Grundlagen der Programmierung

Nachname:... Vorname:... MatrNr.:... Klausur PR2. Erstellen Sie eine Struktur für eine Komplexe Zahl mit den Elementen real und imag vom Typ double.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Objektorientiertes Programmieren für Ingenieure

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Grundlagen der Programmiersprache C++

Lösung Übungszettel 6 Aufgabe 1-4

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Einführung in die Programmiersprache C

Grundlagen der Programmierung

Die Programmiersprache C Eine Einführung

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Probeklausur: BTI2 / Programmieren I Prof. Dr. H. Herold Erlaubte Hilfsmittel: Vorlesungsmitschrift; C-Bücher

Programmieren was ist das genau?

Variablen und Datentypen

JAVA-Datentypen und deren Wertebereich

Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten

Algorithmen & Programmierung. Rekursive Funktionen (1)

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

Programmieren in C. Burkhard Bunk

Einführung in die Programmierung 1

Informatik I EProg HS13

Präzedenz von Operatoren

Übungspaket 24 Zeichenketten

RO-Tutorien 3 / 6 / 12

Propädeutikum. Dipl.-Inf. Frank Güttler

Informatik B von Adrian Neumann

AuD-Tafelübung T-B5b

2. Programmierung in C

Probeklausur: Programmierung WS04/05

Bernd-Blindow-Schulen Friedrichshafen / IKA 9/ Klausur Programmiertechnik-Praxis (1. Sem.)

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Programmieren I + II Regeln der Code-Formatierung

Programmieren in C/C++ und MATLAB

Transkript:

Hochschule München, FK 03 SS 2016 Ingenieurinformatik C-Programmierung Zulassung geprüft: Bachelorstudiengang: Studienbeginn vor WS13/14 (Kombinationsprüfung) ** Studienbeginn ab WS13/14 bis WS15/16 ** Studienbeginn ab SS16 (Kombinationsprüfung) Diplomstudiengang Fahrzeugtechnik ** ** Die Prüfung ist nur dann gültig, wenn Sie die Zulassungsvoraussetzung erworben haben (erfolgreiche Teilnahme am Praktikum). Aufgabensteller: Dr. Reichl, Dr. Küpper und Kollegen Bearbeitungszeit: 60 Minuten Hilfsmittel: Taschenrechner nicht zugelassen, PC/Notebook nicht zugelassen, sonstige eigene Hilfsmittel sind erlaubt, Bearbeitung mit Bleistift ist erlaubt. *** Viel Erfolg! *** Seite 1 von 8

Aufgabe 1: (ca. 21 Punkte) 1.1. Programmieren Sie eine Funktion int ggt(int a, int b) zur Berechnung des größten gemeinsamen Teilers (ggt) von zwei Integer-Werten a und b. Zur Berechnung ist der euklidische Algorithmus zu verwenden: 1.2. Erstellen Sie ein Hauptprogramm int main(void), welches die folgenden Aufgaben bearbeitet: a. Es werden drei Vektoren a[], b[] und c[] mit jeweils 100 Elementen vom Typ int definiert. b. Die beiden Vektoren a[] und b[] werden mit jeweils 100 ganzzahligen Zufallszahlen im Bereich 1 100 gefüllt. c. Mithilfe der im Unterpunkt 1.1. implementierten Funktion wird der ggt von a[0] und b[0] berechnet und in c[0] gespeichert. Anschließend wird der ggt von a[1] und b[1] berechnet und in c[1] gespeichert. Danach wird der ggt von a[2] und b[2] berechnet und in c[2] gespeichert. Und so weiter, bis für alle Werte in den Vektoren a[] und b[] die größten gemeinsamen Teiler berechnet und im Vektor c[] gespeichert wurden. d. Erst danach, also wenn alle drei Vektoren vollständig belegt worden sind, erfolgt die Ausgabe der Ergebnisse auf dem Bildschirm wie folgt: e. Die in den drei Vektoren gespeicherten Werte werden tabellarisch (rechtsbündig!) untereinander ausgegeben. Die Ausgabe soll so aussehen, wie in der folgenden Abbildung gezeigt. f. Denken Sie auch an die Ausgabe der Überschrift. 1.3. Ergänzen Sie ggf. den von Ihnen geschriebenen C-Quelltext auf der nebenstehenden Seite 3 so, dass sich insgesamt ein vollständiges C-Programm ergibt, welches ohne Fehler vom Compiler übersetzt werden kann. (Denken Sie an die notwendigen Include-Dateien, Funktionsdeklarationen usw.) Seite 2 von 8

Seite 3 von 8

Aufgabe 2: (ca. 24 Punkte) Das folgende C-Programm multipliziert zwei 3x3-Matrizen miteinander. Die Funktion zur Ausgabe des Ergebnisses muss noch programmiert werden. #include <stdio.h> #define DIM 3 void print_ergebnis(void); void multiplikation(void); double a[dim][dim] = 2, 0, 0, 0, 2, 0, 0, 0, 2 ; double b[dim][dim] = 1, 2, 3, 4, 5, 6, 7, 8, 9 ; double c[dim][dim] = 9, 8, 7, 6, 5, 4, 3, 2, 1 ; int main(void) multiplikation(); print_ergebnis(); return 0; void multiplikation(void) int z, s, idx; for(z = 0; z < DIM; ++z) for(s = 0; s < DIM; ++s) b[z][s] = 0; /**A**/ for(idx = 0; idx < DIM; ++idx) b[z][s] += a[z][idx] * c[idx][s]; /**B**/ void print_ergebnis(void) Aufg. 2.6 Seite 4 von 8

2.1. Zeichnen Sie ein Struktogramm der Funktion void multiplikation(void). 2.2. Wird das Berechnungsergebnis in der Matrix a[], in b[] oder in c[] abgespeichert? 2.3. Wie lautet das Ergebnis der Matrixmultiplikation, wenn die Matrizen vor der Multiplikation mit den oben im Programm angegebenen Werten belegt werden? 2.4. Wie oft werden die mit /**A**/ und /**B**/ markierten Zeilen ausgeführt? Zeile A: Zeile B: 2.5. Wieviel Speicher (in Bytes) wird von den Matrizen a[], b[] und c[] insgesamt im Arbeitsspeicher des Rechners belegt, wenn das C-Programm auf einem Windows-PC ausgeführt wird? Speicherbedarf insgesamt: 2.6. Programmieren Sie mit zwei verschachtelten Schleifen die Funktion void print_ergebnis(void) zur Ausgabe der Ergebnismatrix. Jede Zeile der Ergebnismatrix wird in einer eigenen Zeile auf dem Bildschirm dargestellt. Die einzelnen Elemente der Matrix sollen mit zwei Nachkommastellen und mit einer Feldbreite von 6 Zeichen auf dem Bildschirm ausgegeben werden. Seite 5 von 8

Aufgabe 3: (ca. 22 Punkte) 3.1. Das folgende C-Programm ermittelt die Anzahl der Großbuchstaben in einer ASCII-Zeichenkette. Ergänzen Sie die fehlenden Anweisungen! Umlaute müssen nicht berücksichtigt werden! #include <stdio.h> #include <ctype.h> #include <string.h> int main(void) char my_text[] = "Das ist ein Test!"; int anz = // Funktion "gross" aufrufen, // "my_text" übergeben printf("anzahl der Grossbuchstaben: %d\n", anz); return 0; int gross( ) int cnt = 0, idx; for(idx = 0; if( return cnt; ; idx++) ) cnt++; 3.2. Das folgende C-Programm dient zur Umwandlung von positiven Binär- in Dezimalzahlen (also keine 2er-Komplementdarstellung). Korrigieren Sie die fünf Fehler im Quelltext. #include <stdio.h> #define LAENGE 8 int bin_to_dez(int *binaer_ziffern) int main(void) int zahl1[laenge] = 1, 1, 1, 1, 1, 1, 1, 0 ; int zahl2[laenge] = 0, 1, 1, 1, 1, 1, 1, 1 ; printf("zahl1 = %d\n", bin_to_dez(zahl1)); printf("zahl2 = %d\n", bin_to_dez(zahl2)); return 0; int bin_to_dez(int *binaer_ziffern) int i, ergebnis; for(i = 0; i < LAENGE; ++i) ergebnis += binaer_ziffern[laenge-i-1] * (int)pow(2.0, i); Seite 6 von 8

3.3. Wie sieht die Bildschirmausgabe des (korrigierten) C-Programms aus Unterpunkt 3.2 aus? 3.4. Im Unterpunkt 3.2 wird die Länge (= Anzahl der Binärziffern) der umzuwandelnden Binärzahlen über die Konstante LAENGE eingestellt. Die LAENGE der Binärzahlen darf allerdings nicht beliebig groß werden, sonst funktioniert das Programm nicht mehr korrekt. Warum? 3.5. Welches ist der maximale Wert für LAENGE, der bei den Windows-Rechnern im Praktikumsraum noch ohne Probleme möglich ist? 3.6. Wie lautet die Bildschirmausgabe des folgenden Programms? #include <stdio.h> void plus1(int x); void plus2(int *y); int main(void) int x = 1, y = 1; plus1(x); plus2(&y); printf("x = %d, y = %d\n", x, y); return 0; void plus1(int x) x += 1; void plus2(int *y) *y += 1; Bildschirmausgabe: Seite 7 von 8

(Platz für Notizen und Nebenrechnungen) Seite 8 von 8