13 schwere Kurzfragen
-
volkard schrieb:
- Wie kann erreicht werden, das Klasse A Zugriff auf Privatelement von B hat ?
[...] reinterpret_cast auf klasse mit gleichem speicherlayout.

aber die 9) gibt extrapunkte und einen smiley
:xmas1:
- Wie kann erreicht werden, das Klasse A Zugriff auf Privatelement von B hat ?
-
Neuling005 schrieb:
Hallo, habe ein paar Fragen, vielleicht kann mir hier geholfen werden....?!
Ich versuch's mal
- Wieviel Speicherplatz belegt ein Zeiger bei einem 32-Bit breiten Adressbus?
sollte 32 Bit (=4 Byte) sein, aber konsultiere lieber deinen Compiler deswegen

- Welche Dezimalzahl wird durch die hexzahl 0x1A2F dargestellt?
Umrechnen dürfte nicht so schwer sein - zur Not fragst du den Windows-Rechner.
- Was versteht man unter einem rekursivem Algorithmus? Nennen SIe ein Beispiel.
Ein Algorithmus, der sich für Teillösungen wieder selber aufruft, z.B. QuickSort oder die Türme von Hanoi (letzteres ist schon fast der Klassiker).
- Nach welchen Kriterien werden Algorithmen bezüglich ihrer Leistungsfähigkeit beurteilt?
Das hängt wohl vom anwendungsfall ab: Laufzeitverhalten, Speicherbedarf, Skalierbarkeit,...
- Unterschied zwischen Klassen und Objekten?
Klasse = Datentyp (z.B. "Auto"), Objekt = konkrete Instanz eines Typs (z.B. "mein Auto")
- Das 5bit des Integerwertes wPort soll auf den Wert der anderen Bits zu verändern. Schrieben Sie den c-Code
Viel Spaß dabei

- Was versteht man unter Kapselung? Welche Zugriffspezfizierer gibt es in C++?
Kapselung = Zugriffsschutz (wer darf auf meine Daten zugreifen) - in C++ gibt es private (nur für mich), protected (für mich und meine Nachkommen) und public (für jeden).
- Wo liegt der unterschied zwischen i++ und ++i?
Bei eingebauten Typen im Rückgabewert - bei deinen eigenen Klassen kann beides eine eigene Bedeutung bekommen.
- Beschreiben SIe drei Möglichkeiten Ergebniswerte einer Funktion an das aufrufende Programm zurückzugeben. Je ein Beisp.
Rückgabewert (int f(){return 4711;}), Pointer (void f(int*r) {*r=4711;}), Referenz (void f(int&r){r=4711;}).
- Wie kann erreicht werden, das Klasse A Zugriff auf Privatelement von B hat ?
friend, indirekt über öffentliche Methoden oder reinterpret_cast<> fällt mir auf Anhieb ein.
- Welche Aufgabe hat ein Konstruktor, welche ein Destruktor einer Klasse?
Konstruktor = Objekt ordentlich initialisieren, Destruktor = Objekt ordentlich vernichten (Betonung liegt auf "ordentlich" ;))
zu 6) wPort[4] = 1;
Ne, das kann so nicht funktionieren - du benötigst schon Bit-Operatoren (&,|,^,~) dafür.
zu 12) Konstruktor erzeugt eine Klasse, bevor mit ihr gearbeitet wird
destruktor zerstört sie wieder, wenn sie nicht mehr gebraucht wird, wird keines von beidem eingesetzt, gilt die klasse immer als bestehend und benötigt speicherplatz, richtig ???Konstruktor und Destruktor werden für jedes Objekt eingesetzt (OK, der Destruktor nicht für Objekte, die in ein Speicherleck gefallen sind).
-
Klingt ja wie ne schul arbeit :>
-
wo sind die türme von hanoi rekursiv?
-
verschiebe(n,von,nach,über): verschiebe(n-1,von,über,nach) setze_stein(von,nach) verschiebe(n-1,über,nach,von)Ist dir das nicht rekursiv genug?
-
die Türmchen gibts in beiden Varianten, rekursiv und iterativ
-
CStoll schrieb:
verschiebe(n,von,nach,über): verschiebe(n-1,von,über,nach) setze_stein(von,nach) verschiebe(n-1,über,nach,von)Ist dir das nicht rekursiv genug?
also gibt es einen algorithmus, der die türme von hanoi löst und der rekursiv ist. ich finde das rätsel leichter iterativ lösbar. sind deshalb die türme von hanoi rekursiv?
-
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)
-
CStoll schrieb:
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)//zielRichtung ist die richtung vom startturm zum zielturm if(istUngeradeGerade(anzahlDerTürme)) richtung:=zielRichtung else richtung:=dieAndereRichtung(zielRichtung) zieh die kleine scheibe zykisch nach richtung solange nicht fertig zieh den einzig möglichen zug, der nicht die kleine scheibe benutzt zieh den kleinsten zykisch nach richtunghab aber auch schon lehrbücher gesehen, in denen stand expizit drin "die türme von hanoi lassen sich nicht iterativ lösen."
edit: zum testen http://www.mazeworks.com/hanoi/index.htm
-
CStoll schrieb:
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)auch wenn ich in der problemstellung eine rekursive definition benutze?
-
volkard schrieb:
CStoll schrieb:
Und wie sieht die iterative Lösung aus?
(btw, ein Problem ist weder iterativ noch rekursiv - erst eine mögliche Lösung kannst du entsprechend einordnen)auch wenn ich in der problemstellung eine rekursive definition benutze?
Wenn du dir daraufhin die Problemstellung nochmal iterativ verdeutlichst - hast du dann ein anderes Problem beschrieben?
-
finix schrieb:
Wenn du dir daraufhin die Problemstellung nochmal iterativ verdeutlichst - hast du dann ein anderes Problem beschrieben?
nicht, wenn es trotz der anderen beschreibung das gleiche problem ist.
also gehe ich mal von einem problem aus, das man nicht ohne rekursion beschreiben kann.
-
Wann kommen denn eigentlich die schweren Kurzfragen?
-
hab aber auch schon lehrbücher gesehen, in denen stand expizit drin "die türme von hanoi lassen sich nicht iterativ lösen."
Also so eine Aussage wäre auch unsinnig - man kann JEDE Rekursion in eine Iteration umwandeln (notfalls indem man die rekursiven Aufrufe durch einen eigenen Rechenstack nachbildet).
volkard schrieb:
auch wenn ich in der problemstellung eine rekursive definition benutze?
Für was für ein Problem willst du denn eine rekursive Beschreibung nutzen? (Ein Problem schreibt man normalerweise in der Form "ich habe A und will B erreichen - was muß ich tun?" - wenn du an der Stelle schon über Rekursion nachdenkst, machst du etwas falsch)
-
CStoll schrieb:
Also so eine Aussage wäre auch unsinnig - man kann JEDE Rekursion in eine Iteration umwandeln (notfalls indem man die rekursiven Aufrufe durch einen eigenen Rechenstack nachbildet).
Dann werf ich einfach mal die Ackermann- oder Ulam-Funktion in den Raum ^^
Die Türme ließen sich afaik durch Permutationsbildung iterativ lösen. Mein Prof hatte mal ein Programm, dass das machte. Es geht auf jeden Fall.
-
CStoll schrieb:
hab aber auch schon lehrbücher gesehen, in denen stand expizit drin "die türme von hanoi lassen sich nicht iterativ lösen."
Also so eine Aussage wäre auch unsinnig - man kann JEDE Rekursion in eine Iteration umwandeln (notfalls indem man die rekursiven Aufrufe durch einen eigenen Rechenstack nachbildet).
das gilt nicht. gemeint war, daß es iterartiv nicht gehe, außer mit dem notfall-trick.
-
CStoll schrieb:
volkard schrieb:
auch wenn ich in der problemstellung eine rekursive definition benutze?
Für was für ein Problem willst du denn eine rekursive Beschreibung nutzen? (Ein Problem schreibt man normalerweise in der Form "ich habe A und will B erreichen - was muß ich tun?" - wenn du an der Stelle schon über Rekursion nachdenkst, machst du etwas falsch)
du sagst mir gerade, daß ich was falsch mache, nur weil ich mehr sachen kenne? respekt!
ich denke konkret an eine rekursive definition im buch über formale begriffsanalyse von wille und ganter. die war wirklich happig und da wäre es kein fehler, davon auszugehen, daß man iterartiv keinen ordentlichen zugang hat. das buch liegt mir im moment nicht vor und ich kann nicht nachblättern.
denken wir und erstmal ganz einfach die definition "ein elefant ist jemand, dessen beide eltern elefanten sind". das ist nicht irgend eine eine lösungsstrategie für die frage, ob jemand ein elefant ist, sondern es ist die definition. aber die läßt sich jetzt von eventuellen problemstellungen abkoppeln. daher denke ich weiter daran, die problemstellung (evtl ein wenig hintertückisch) miteinzubeziehen wie im berühmten "was ist die größte zahl, die sich nicht mit worten darstellen läßt?" (eine wort-darstellung einer zahl ist "die größte zahl, die sich nicht mit worten darstellen läßt" und schnell wird's absurd, was aber nix an der problemstellung ändert).
-
Hallo,
Volkard meinte der Zeiger auf eine nicht Klassenmethode ist 2/3 mal so groß wie ein Zeiger auf eine "normale"
Funktion.
Ich dachte das wäre ein ganz normaler Zeiger auf eine Funktion, die quasi implizit den this-Pointer als Parameter mitbekommt. Lass mich gerne belehren.
-
volkard schrieb:
das gilt nicht. gemeint war, daß es iterartiv nicht gehe, außer mit dem notfall-trick.
Kann man immer unterscheiden, ob ein Algorithmus diesen "Trick", auch verschleiert, anwendet oder "echt iterativ" ist?
-
- Wieviel Speicherplatz belegt ein Zeiger bei einem 32-Bit breiten Adressbus?
fangfrage: der 80286 hat einen 24bit breiten datenbus, das heisst noch lange nicht, dass pointer dort 24bit breit sind. und ein far-pointer auf x86 32bit architektur hat 48 bit.
@volkard: standard-konforme pointer auf member-funktionen sind immer gleich gross, dass visual c++ hier unterschiede macht, ist eine proprietäre erweiterung). das ergibt sich einfach darsu, dass ein reinterpret_cast zu einem beliebeigen anderen pointer auf memberfunktion und zurück den ursprünglichen pointer ergeben muss.- Beschreiben SIe drei Möglichkeiten Ergebniswerte einer Funktion an das aufrufende Programm zurückzugeben. Je ein Beisp.
möglicherweise sind hier mechanismen gemeint: also per-value als funktionswert, per-referenz (mittels referenz oder pointer) über funktionsparameter, per exception. könnte aber auch anders gemeint sein.