Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Musterklausur Programmieren 1

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.03.2012, 15:04 Uhr
ao

(Operator)


Wenn du dich selber anstrengst, helfen wir dir auch ohne Geld.

Also knips deinen Denkomaten an und fang an mit Aufgabe 1. Eine Struktur belegt so viel Speicher wie die Summe ihrer Member. Einfach zusammenrechnen.

Dieser Post wurde am 06.03.2012 um 15:15 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.03.2012, 22:57 Uhr
0xdeadbeef
Gott
(Operator)


Das ist so nicht ganz korrekt. Im vorliegenden Fall wird mit einiger Wahrscheinlichkeit zwischen Name und Pos in CityT etwas Padding eingefügt werden. Float heißt üblicherweise ieee-754 single, also 4 Byte breit und wahrscheinlich auch mit 4-Byte-Alignment, daher wird Name plus Padding im Zweifel 12 Byte breit sein. Das ist aber natürlich alles plattformabhängig.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.03.2012, 08:31 Uhr
ao

(Operator)


Weiß ich auch. Das hat aber mit dem Zielprozessor zu tun und nicht mit der Programmiersprache. Deshalb gehe ich davon aus, dass es in Klausuraufgaben keine Rolle spielt, außer es steht extra dabei, dass irgendwelche Alignment-Regeln beachtet werden sollen.
Dieser Post wurde am 07.03.2012 um 11:02 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: