6. Übungen zur Computermathematik (C#) WS 2011/2012 Falls

Werbung
6. Übungen zur Computermathematik (C#)
WS 2011/2012
Falls nichts anderes angegeben ist, steht Ihnen nachstehend die Wahl zwischen einem
Konsolen- oder Windowsprogramm frei. Bei Windows-Anwendungen haben Sie überdies
noch die Wahl zwischen einem Layout erstellt mit Windows Forms oder – falls Sie sich selbst
die Latte höher legen wollen! – der professionelleren Kombination von XAML & WPF.
41. Man schreibe eine C#-Programm, welches in möglichst übersichtlicher Form die in der
Klasse Environment gespeicherten Informationen über den Rechner des Benutzers und die
diversen Datenpfade ausgibt.
42. Man verbessere das Programm C#-Demoprogramm CPrimes dahingehend, dass für t>5
von vornherein nur Probeteiler t betrachtet werden, welche nicht durch 2,3 oder 5 teilbar sind
(s. dazu auch die Erläuterungen in Aufg. 22).
43. Schreiben Sie eine rekursive Methode mergesort (s. dazu das Programm in der MapleDemo), mit der Arrays von ganzen Zahlen sortiert werden können. Schreiben Sie ferner auch
eine Methode bool test(int n, int s), welche für ein vorgegebnes Array und unter Verwendung
der eingebauten Methode Sort von Array die Richtigkeit des Ergebnisses für n ganzen
Zufallszahlen im Bereich von [0,s) überprüft. (Die Klasse System.Random und ihre Methode
Next dürfte dabei nützlich sein.)
44. Man schreibe eine Windows-Anwendung, welche für sämtliche Zahlentypen in C#
•
•
•
•
den Klassennamen in Langform (also z.B. System.Int32 oder Int32 statt nur int),
die Größe in Bytes,
den kleinsten und
größten Wert
in jeweils einem beschrifteten Textfeld ausgibt, wobei die Auswahl durch den Benutzer über
ein Kontrollelement vom Typ Combobox möglich sein soll.
45. Man schreibe eine Windows-Anwendung, welche es dem Benutzer gestattet für die Klasse
String einige der wichtigsten Eigenschaften und Methoden (etwa 6 bis 10, ähnlich wie für die
Klasse StringBuilder in der C#-Einführung) in ihrer Funktionsweise zu sehen.
46. Man schreibe eine Windows-Anwendung, welche die Wurzel aus einer Zahl a ≥ 0 mit
Hilfe der Rekursion
x 0 = (a + 1) / 2, x n +1 = ( x n + a / x n ) / 2 ∀n ∈ N
berechnet und insbesondere auch die iterierten Werte x 0 , x1 , x 2 ,... bis zur ersten Wiederholung in der durch den Benutzer in einer ComboBox einstellbaren Genauigkeit „niedrig“,
„mittel“ und „hoch“ (entsprechend den verwendeten Zahlentypen float, double bzw. decimal)
in einer Listbox ausgibt, und zwar mit 0 beginnend durchnummeriert.
47. Nach dem Vorbild der Klasse BigNum aus der C#-Demo schreibe man ein struct
GaussInt, welche das Rechnen mit Ganzen Gaußschen Zahlen, d.h., komplexen Zahlen der
Bauart a+bi, a,b ganz, ermöglicht. Man implementiere dafür mindestens die Eigenschaften Re
und Im vom Typ int für Real- und Imaginärteil und den Operatoren für = =, !=, +, -, *, /,%
wobei unter dem Quotienten u/v jene ganze Gaußsche Zahl w verstanden wird, die aus dem
„echten“ Quotienten in C durch „Rundung“ (bei Mehrdeutigkeiten Abrundung) entsteht und
u%v ist dann gewissermaßen der „Rest“ bei dieser Division, also u-w*v. Ferner soll auch eine
Methode zur Berechnung des ggT von zwei ganzen Gaußschen Zahlen angegeben werden (s.
dazu die Maple-Demo), eine implizite Konvertierung von int nach GaussInt möglich sein und
der Parser von GaussInt sollte überdies Eingaben wie z.B. -3+4i, 5, 2i auch richtig
interpretieren können.
48. Ähnlich wie in Aufg. 47 modelliere man ein struct Bruch, welches das Rechnen mit
Brüchen ermöglichen soll, wobei Zähler und Nenner vom Typ BigInteger sein sollen und als
weitere Eigenschaft das Vorzeichen sign in {-1,0,1} vom Typ sbyte dazukommt. Außer den
Relationen und Operatoren = =, !=, +, -, *, / soll auch eine implizite und explizite
Konvertierung (=Rundung auf die nächste ganze Zahl) zwischen int und Bruch möglich sein
und der Parser soll Eingaben in der „Bruchschreibweise“ (also z.B. „-14/91“) „verstehen“ und
mithilfe des Konstruktors in einen struct umwandeln, der diesem Bruch (nach einer ev.
Kürzung!) entspricht. Ferner erstelle man eine einfache Windows-Anwendung für die Einund Ausgabe obiger Rechen- und Vergleichsoperationen.
Herunterladen