000
06.03.2012, 13:51 Uhr
hanspeter111
|
für die Lösung wäre ich bereit 20 Euro zu zahlen
Aufgabe 1: C-Datenstrukturen verstehen Gegeben seien folgende Datentypen und Variablen für die Speicherung von Städtekoordinaten:
/* Typdefinitionen */ typedef struct { float Breitengrad; float Laengengrad; } PositionT; typedef struct { char Name[10]; PositionT pos; } CityT; CityT staedte[100], *st = staedte;
1. Wieviel Speicherplatz belegt die Variable staedte? 2. Wie lautet die C-Anweisung, um den Breitengrad der 3. Stadt auf 51.47 zu setzen? 3. Wie lautet die C-Anweisung, um den 1. Buchstaben des Namens der 2. Stadt auf dem Bildschirm auszugeben? 4. Angenommen die Variable staedte sei im Speicher ab Adresse 5000 abgelegt. Was gibt folgende Anweisung auf dem Bildschirm aus:
Aufgabe 2: Datenstrukturen entwickeln Gegeben sei folgende Data Dictionary-Definition für die Daten eines OnlineÜberweisungsformulars:
Datenstrukturen Überweisung = Empfänger + Empfängerkonto + Betrag + Währung + + 1{Verwendungszweck}2 + (Ausführungszeitpunkt)+ Datum Empfängerkonto = Kontonummer + BLZ + (Kreditinstitut) Datum = Tag + Monat + Jahr Ausführungszeitpunkt = Datum Datenelemente Empfänger: Text mit maximal 20 Zeichen Betrag: [0,00 .. 999.999.999,99] Währung: [EUR|USD|CHF|GBP] Verwendungszweck: Text mit maximal 20 Zeichen Kontonummer: [1000000 .. 9999999] BLZ: [1 .. 9999999] Kreditinstitut: Text mit maximal 20 Zeichen Tag: [1 .. 31] Monat: [1 .. 12] Jahr: [1900 .. 2500] Übersetzen Sie die DD-Definition in C-Datentypen mit bestmöglicher Entsprechung.
Aufgabe 3: Sortierfunktion
Gegeben sei die folgende Datenstruktur für Speicherung von Studentendaten typedef struct { char Name[20]; unsigned long Matrikelnummer; } StudentT;
wowie eine Funktion compareByName, die zwei Studentendatensätze s1 und s2 nach dem Namen vergleicht. Die Funktion liefert einen Wert < 0 zurück, falls der Name von s1 kleiner ist als der von s2, 0 falls die Namen gleich sind und einen Wert > 0 falls Name von s2 größer als der von s1. int compareByName(StudentT s1, StudentT s2){ return strcmp(s1.Name, s2.Name); }
1. Definieren Sie eine weitere Vergleichsfunktion compareByMatrNr, welche zwei Studentendatensätze nach der Matrikelnummer vergleicht. Die Funktion habe die gleiche Signatur (gleiche Anzahl und gleicher Typ der Parameter und gleicher Rückgabetyp) und liefere ebenfalls einen Wert < 0 zurück, falls die Matrikelnummer von s1 kleiner ist als der von s2, 0 falls die Matrikelnummern gleich sind und einen Wert > 0 falls Matrikelnummer von s2 größer als die von s1
2. Definieren Sie eine Funktion sortStudents, welche ein Array von StudentTElementen nach einem durch eine „Call-Back“-Funktion vorgegebenes Vergleichskriterium sortiert. Der Funktion sollen drei Parameter übergeben werden: s = zu sortierendes Array von Studenten, n = Anzahl Elemente des Arrays und cmp = Zeiger auf eine Vergleichsfunktion mit einer Signatur entsprechend den obigen Vergleichsfunktionen. Verwenden Sie für die Implementierung einen Sortieralgorithmus Ihrer Wahl.
3. Schreiben Sie ein Hauptprogramm, in dem ein (kleines, mindestens drei Elemente umfassendes) Array von Studenten definiert und initialisiert wird. Notieren Sie die Anweisungen um dieses Array mit Hilfe der Funktion sortStudents nach Name bzw. nach Matrikelnummer zu sortieren. |