Klausurlösungen sammeln

Moderator: Moderatoren

old
Beiträge: 186
Registriert: Do 17. Dez 2009, 11:50

Re: Klausurlösungen sammeln

Beitrag von old » Do 11. Mär 2010, 09:22

Deshalb habe ich geschrieben, das dieses "static storage" im grunde auch auf dem stack liegt.

Manuelito
Administrator
Beiträge: 157
Registriert: Mi 3. Mär 2010, 15:11

Re: Klausurlösungen sammeln

Beitrag von Manuelito » Do 11. Mär 2010, 10:05

Hi,

ok, überzeugt. ;)

Jetzt will ich aber mal damit weitermachen, wofür der Thread eigentlich gedacht war, zum Klausurlösungen sammeln:
Wintersemester 07/08 A
Wintersemester 07/08 B
Wintersemester 08/09 A
Wintersemester 08/09 B

Wenn einem irgendwas auffällt, wo ich noch einen Denkfehler habe, bitte melden!!

Viele Grüße,
Manuel

Edit: Hier noch die beiden vom Sommersemester
Sommersemester 08
Sommersemester 09
Zuletzt geändert von Manuelito am Do 11. Mär 2010, 16:31, insgesamt 1-mal geändert.

old
Beiträge: 186
Registriert: Do 17. Dez 2009, 11:50

Re: Klausurlösungen sammeln

Beitrag von old » Do 11. Mär 2010, 11:35

WS 07/08 A:
Vektorprodukt,

Wenn du das so löst, könnte es schwierigkeiten geben..Du verheizt dabei recht viel speicher, weil du eine kopie anlegst.
Also Zeiger auf erstes element im vektor übergeben bekommen, adressen inkrementieren->dereferenzieren.

->

int vecproduc(int *vec_a, int *vec_b,int len){
int sum,i=0;
sum=0;

while(i<=len){
sum+= *( vec_a+i) * *(vec_b+i);
i++;
}
return sum;
}

benben
Beiträge: 12
Registriert: Sa 6. Feb 2010, 23:06

Re: Klausurlösungen sammeln

Beitrag von benben » Do 11. Mär 2010, 11:35

hey,
hab deine Lösungen mal mit meinem Verglichen, bis auf ein paar kleinigkeiten Stimmen wir ziemlich gut überein.
Ich hab leider keinen Scanner oder sonstiges, aber ich versuch mal ob die SS09 und SS08 irgendwie digitalisiert bekomm :)

Sachen die mir bei deinen Lösugen aufgefallen sind:
WS07_A Aufgabe 6
Stack-> in einem Schritt 2 Funktionen

WS07_B Aufgabe 4
ZEILE:20 A in Zeile 17

WS08_B Aufgabe 2
void fibonacci (int n) -> int fibonacci (int n)
Aufgabe 3
In Zeile 15: 12 12
Aufgabe4
in der inneren for schleife, warum i+j> N-1 ?
Aufgabe6
"Herausnehmen des Elements mit dargestellt"
Meinst du das wir das so machen sollen?

old
Beiträge: 186
Registriert: Do 17. Dez 2009, 11:50

Re: Klausurlösungen sammeln

Beitrag von old » Do 11. Mär 2010, 11:43

BEi Ws07/08 A:

A4:

Ich behaupte da ist ein fehler drinne.

Du übergibst die adresse von f an die funktion. Dann lässt du y (bzw. f) auf speicherstelle 6 zeigen.
Da haben die wohl ein sternchen vergessen?


+ WS07/08 A:
A6:
Ich würde sagen der laufzeit stack sieht so aus, das main links steht und dann in der rechten spalte von oben nach unten
fak 3... herunterläuft.
Denn die funktionen werden aufgerufen aber direkt danach wieder geschlossen.

old
Beiträge: 186
Registriert: Do 17. Dez 2009, 11:50

Re: Klausurlösungen sammeln

Beitrag von old » Do 11. Mär 2010, 12:04

WS08/09A
A4:

In der for schleife entweder bis 11 laufen oder bis <=10 (Array ist 11 stellen lang, also 0 bis 10).

A5:
b1) Der Algortihmus überprüft, ob RECHTS von ihm im array nochmal dieselbe zahl auftaucht.
Das ist sehr wichtig das anzugeben...


Bei A7:
Es hätte vermutlich gereicht nodeptr np=Init(&np); zu übergeben. (Aber verkehrt ist es natürlich nicht).

old
Beiträge: 186
Registriert: Do 17. Dez 2009, 11:50

Re: Klausurlösungen sammeln

Beitrag von old » Do 11. Mär 2010, 12:14

WS08/09 B:

A2: Sieht so gut aus.
( Warum int als rückgabewert? Die funktion gibt nichts zurueck)

A3: 12,12

A7: Coole sache, habe es ähnlich als inorder gebaut...

Manuelito
Administrator
Beiträge: 157
Registriert: Mi 3. Mär 2010, 15:11

Re: Klausurlösungen sammeln

Beitrag von Manuelito » Do 11. Mär 2010, 13:36

Hey,

Danke für die Hinweise, habe sie korrigiert und werd heute Nachmittag die korrigierten Fassungen nochmal hochladen (und das kurz hier ankündigen).

Ein paar Sachen waren aber falsch, glaube ich:

WS 07_A Aufg 2 (Vektorprodukt)
guter Hinweis, habe ich so verbaut. Allerdings darf die Laufvariable i nur bis len-1 gehen, sonst schreibst du über dein Array hinaus.

WS08_B Aufg 2 (Fibonacci verbessern)
wie old schon sagte, die Funktion gibt nirgendwo was zurück, sie schreibt es nur auf den Bildschirm, daher ist void hier richtig

WS08_B Aufg 4 (Matrix spiegeln)
Damit ich nur alle Elemente bis zur Nebendiagonale (und die selber nicht mehr) spiegel. Würde ich bei i und j bis N-1 laufen, würd er alle Veränderungen wieder rückgängig machen, wenn er im rechten unteren Dreieck ist. Aber du hast das hier falsch abgetippt, in meiner Lösung stand i+j < N-1 (nicht größer)

WS08_B Aufg 6 (Insertion Sort)
Das hab ich mich auch gefragt, aber da explizit steht jede Veränderung im Speicher, es mit der Anzahl der vorgegebenen Zeilen so schön hinkommt und du nachher sonst bei der 7 am Ende zuviel auf einmal machen müsstest, hab ichs einfach mal so gemacht.

WS07_A Aufg 4
Ich denke das Sternchen ist absichtlich nicht abgedruckt. So bekommt dein lokaler Zeiger halt eine neue Adresse zugewiesen. Da aber dort nichts reingeschrieben wird und der Zeiger nach der Funktion wieder verschwunden ist, ist das auch nicht weiter schlimm.

WS07_A Aufg 6
Nein, wenn du dir die fak genau anguckst, siehst du, dass diese Funktion die Nachfolger aufruft. Danach passiert in der alten fak-Funktion zwar nichts mehr, aber das merkt das Programm erst, nachdem es dahin zurückgekehrt ist.

WS08_A Aufg 4 (Parity-Bit)
Nein, der zu überprüfende String ist laut Aufgabenstellung nur 10 Zeichen lang, an Position 10 des Arrays ist das abschließende '\0', nur das brauchst du ja nicht zu überprüfen.

WS08_A Aufg 5
Hier versteh ich deinen Einwand nicht. Der Algorithmus vergleicht doch alle Paare in dem Array und sobald eins davon gleich ist, wird eine 1 zurückgegeben, sonst keine weitere Information. Ob der rechte Wert jetzt rechts von dem linken oder der linke Wert links von dem rechten ist spielt doch keine Rolle.

WS08_A Aufg 7
Wenn du dir die Init, wie sie vorgegeben ist, anguckst, siehst du, dass diese Funktion nichts zurückliefert und einen listptr erwartet. Daher geht dein Code so nicht. Aber hier habe ich mich auch schon gewundert, warum meine Implementation so lang ist, bei so wenig Platz, wie uns da vorgegeben ist. Aber was kürzeres fällt mir nicht ein....

Viele Grüße,
Manuel

PS: Ich bearbeite gerade auch noch die Sommersemesterklausuren, also wenn du keinen Scanner mehr findest, benben, kann ich die gleich auch noch hochladen.

old
Beiträge: 186
Registriert: Do 17. Dez 2009, 11:50

Re: Klausurlösungen sammeln

Beitrag von old » Do 11. Mär 2010, 14:33

Hi,

doch theoretisch ginge es mit dem zeiger.
Du übergibst der funktion halt die adresse des zeigers selber
Dann kann die funktion diese adresse dereferenzieren und den zeiger auf eine neue stelle im heap zeigen lasse...

Also ein pointer=Init(..) geht nicht, sorry dafür.

Manuelito
Administrator
Beiträge: 157
Registriert: Mi 3. Mär 2010, 15:11

Re: Klausurlösungen sammeln

Beitrag von Manuelito » Do 11. Mär 2010, 16:32

Hier jetzt alle Lösungen von mir:
Wintersemester 07/08 A
Wintersemester 07/08 B
Wintersemester 08/09 A
Wintersemester 08/09 B
Sommersemester 08
Sommersemester 09

In den Wintersemester-Lösungen habe ich alles, was bis jetzt angemerkt wurde, korrigiert.

Antworten

Zurück zu „Info I“