Lösungsvorschläge für den Fragenkatalog von Prof. Stark im Fach Programmieren II – Technische Informatik an der Hochschule Augsburg.
1. Was gilt bezüglich der Sichtbarkeit von gleichen Namen in geschachtelten Blöcken?
Jede Variable hat einen Gültigkeitsbereich (engl. scope). Ein Gültigkeitsbereich wird vereinfacht gesagt durch zwei geschweifte Klammern definiert. Innerhalb eines Gültigkeitsbereichs kann man nur auf Variablen eines übergeordneten Gültigkeitsbereich bzw. den eigenen zugreifen. Sollten zwei Variablen in einem Übergeordneten und im lokalen Gültigkeitsbereich den gleichen Namen besitzen, so kann nur auf die Lokale Variable zugegriffen werden.
Beispiel:
#include <iostream> using namespace std; int main() { int var1 = 1; cout << var1 << endl; // Ausgabe: 1 if(1) { cout << var1 << endl; // Ausgabe: 1 int var1 = 2; cout << var1 << endl; // Ausgabe: 2 } cout << var1 << endl; // Ausgabe: 1 }
2. Was versteht man unter dem Namensraum?
Ein Namensraum (engl. namespace) ist eine Abstrakte Umgebung die Klassen, Funktionen und Variablen gruppiert. So ist beispielsweise die ganze C++-Standardbibliothek im Namensraum std definiert. In C++ werden Namensräume in der Regel dazu benutzt Namenskollisionen zu vermeiden. Die Namensraumauflösung ist hierarchisch. So kann innerhalb eines Namensraumes ein anderer definiert werden. Mit der Eingabe von using namespace kann ein Namensraum fest eingestellt werden. Ansonsten muss mittels des Bereichsoperators :: auf den Namensraum zugegriffen werden.
Beispiel:
#include <iostream> namespace ns1 { int var1 = 0; namespace ns2 { int var2 = 1; } } int main() { std::cout << ns1::var1 << std::endl; std::cout << ns1::ns2::var2 << std::endl; using namespace std; cout << "hier ohne std..." << endl; }
3. Schreiben sie ein Programm, das 3 ganze Zahlen verlangt und die größte ausgibt.
#include <iostream> #include <cstdlib> // atoi using namespace std; int main( int argc, char** argv ) { if( argc != 4 ) // erstes Argument argv[0] ist Programmname { cout < < "Bitte mit drei Zahlen aufrufen" << endl; return 0; } int a,b,c,max; a = atoi(argv[1]); b = atoi(argv[2]); c = atoi(argv[3]); if( a < b ) max = b; else max = a; if( max < c ) max = c; cout << "Größte Zahl ist: " << max << endl; }
4. Schreiben sie ein Programm zur Lösung der quadratische Gleichung ax² + bx + c = 0.
#include <iostream> #include <cstdlib> #include <cmath> using namespace std; int main( int argc, char **argv) { if( argc != 4 ) { cout << "Benutzung: Eingabe der Parameter in der Form:" << endl; cout << argv[0] << " a b c" << endl; return 0; } float a = atof( argv[1] ); float b = atof( argv[2] ); float c = atof( argv[3] ); float dis = (pow(b,2)) - (4*a*c); if( dis < 0 ) { cout << "Das Ergebnis kann nicht berechnet werden" << endl; return 0; } else if( dis == 0 ) { float erg1 = (-b + sqrt(dis) ) / (2*a); cout << "Ergebnis = +/- " << erg1 << endl; } else { float erg1 = (-b + sqrt(dis) ) / (2*a); float erg2 = (-b - sqrt(dis) ) / (2*a); cout << "Ergebnis = " << erg1 << endl; cout << "Ergebnis = " << erg2 << endl; } }
5. Betrachtet wird die Klasse vector der Standardbibliothek. Wie kann man eine Bereichsüberschreitung feststellen?
Man kann (und sollte) die ausgelöste Exception abfangen.
Beispiel:
#include <iostream> #include <vector> using namespace std; int main( int argc, char **argv) { vector<int> vec( 5, 1 ); // 5 Elemente mit Wert 1 for( int i = 0; i < 10; i++ ) try { cout << vec.at(i) << endl; } catch( exception e ) { cerr << "Fehler: " << e.what() << endl; } }
hi mark!
hast du vielleicht auch noch den rest der fragen beantwortet und hast lust die auch zu posten????
also fragen 4 Wippensimulation
4.1 Modell
4.2 Grafik
4.3 MFC Gerüst
DANKE!!!!!!!!!!!!!!!!