Modul Programmierung mit C++ 1 Angewandte Informatik Klausurdatum 07.03.2011 Klausur zum Modul Programmierung mit C++ 1 Studiengang Klausurdatum Schreibzeug zugelassene Hilfsmittel nicht zugelassene Hilfsmittel Angewandte Informatik 07.03.2011 / 10.30 - 12.15 Uhr dokumentenechter Stift (kein Bleistift!) 1-2 C /C++-Bücher, Skript zur Vorlesung Rechner, Mobiltelefone, Aufgabensammlungen, alte Klausuren, Praktikumsblätter und deren Lösungen Aufgabe Punkte (max.) Bewertung der Aufgaben: 1 1 10 2 10 3 10 Eulersche Zahl Σ 30 C Die Eulersche Zahl e ist die Basis des natürlichen Logarithmus’ und kann unter anderem als Grenzwert dargestellt werden: ( ) 1 n e = lim 1 + (1) n→∞ n Die n-te Näherung lautet damit also ( en = 1 1+ n )n (2) Liste 1: Prototyp der Funktion euler double euler ( unsigned int n ); Schreiben Sie eine Funktion euler (Prototyp in Liste 1), die zu einem gegebenen n die n-te Näherung gemaß Gleichung 2 berechnet. Die Potenzierung wird dabei als Schleife implementiert, in der das Produkt ausmultipliziert wird. Schreiben Sie anschließend ein kurzes Hauptprogramm, in welchem mit Hilfe dieser Funktion in einer Schleife die 1-te bis 10-te Näherung berechnet und ausgegeben wird. Liste 2 zeigt ein Beispiel. Liste 2: Beispielausgabe: die ersten zehn Näherungen von e 1 n : Näherung 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 : : : : : : : : : : 2.000000 2.250000 2.370370 2.441406 2.488320 2.521626 2.546500 2.565785 2.581175 2.593742 FH Südwestfalen/Iserlohn/FB I+N Prof. Dr.-Ing. Fritz Mehner Seite 1 von 2 Modul Programmierung mit C++ 1 2 Angewandte Informatik Klausurdatum 07.03.2011 Palindrom C Liste 3: Prototyp der Funktionen palindrom1 und palindrom2 1 2 int palindrom1 ( char *pal ); int palindrom2 ( char *pal ); Ein Palindrom ist ein Wort, das vorwärts und rückwärts gelesen gleich lautet. Palindrome sind zum Beispiel die Wörter Lagerregal, Otto, Reittier, Rentner und Rotor. Schreiben Sie zwei Funktionen palindrom1 und palindrom2 (Prototypen in Liste 3), an die eine Zeichenkette beliebiger Länge zur Überprüfung übergeben werden kann. Wenn die Zeichenkette ein Palindrom ist, wird 1 zurückgegeben, andernfalls 0. Die übergebenen Zeichenketten bestehen der Einfachheit halber nur aus Kleinbuchstaben. Die Länge der Zeichenkette kann mit Hilfe der Bibliotheksfunktion size_t strlen(const char *s) bestimmt werden (der Rückgabetyp size_t ist eine int-Größe). In der Implementierung der Funktion palindrom1 werden Zeiger zum Zugriff auf die einzelnen Buchstaben einer Zeichenkette verwendet. In der Implementierung der Funktion palindrom2 wird auf die einzelnen Buchstaben per Feldindex zugegriffen. 3 Summe zweier Quadratzahlen C Liste 4: Prototyp der Funktion is_double_square 1 2 3 4 5 int is_double_square ( unsigned int n, unsigned int *a, unsigned int *b ); /* /* /* /* 0 : Bedingung nicht erfüllt zu untersuchende Zahl 1. Quadratzahl (Rückgabewert) 2. Quadratzahl (Rückgabewert) */ */ */ */ Einige ganze Zahlen lassen sich als Summe aus zwei ebenfalls ganzzahligen Quadraten darstellen. Hierzu einigen Beispiele: 10 = 12 + 32 13 = 22 + 32 17 = 12 + 42 18 = 32 + 32 Schreiben Sie eine Funktion is_double_square (Prototyp in Liste 4), die untersucht, ob sich der im Parameter n übergebene Wert als Summe der Quadrate zweier ganzer Zahlen a und b darstellen läßt: n = a2 + b2 (3) Wenn das zutrifft, gibt die Funktion den Wert 1 zurück, andernfalls den Wert 0. Vorgehensweise. Für einen gegebenen Wert von n werden der Reihe nach die Werte von a = 1 bis √ a ≤ n/2 untersucht. Damit läßt sich für ein so gegebenes a gemäß Gleichung 3 der Wert von b √ 2 berechnen: b = n − a . Wenn b ganzzahlig ist, ist die Bedingung erfüllt. Zur Berechnung der Quadratwurzel wird die Bibliotheksfunktion double sqrt(double x) verwendet. Schreiben Sie weiterhin ein kurzes Hauptprogramm, in welchem die Zahlen von 1 bis 50 mit Hilfe der Funktion is_double_square auf diese Eigenschaft hin untersucht werden. Nur die Zahlen, die sich als Summe zweier Quadratzahlen darstellen lassen, werden ausgegeben. Viel Erfolg ! FH Südwestfalen/Iserlohn/FB I+N Prof. Dr.-Ing. Fritz Mehner Seite 2 von 2