++++++++++++++ Mon Aug  9 19:14:47 2004 ++++++++++++++
Hallo,

ich habe gerade versucht, das "Problem des Handlungsreisenden" zu lösen und bin etwas verwirrt über Ihre Lösung... 
Wenn ich die Koordinaten
A = (10,10) B = (20,40) C = (30,30) D = (30,70)
verwende, bekomme ich von ihrer Lösung als kürzesten Weg
(10,10) (20,40) (30,30) (30,70) (10,10), also ABCDA.
Dies entspricht einer Streckenlänge von 149.0105
Die Lösung
(10,10) (20,40) (30,70) (30,30) (10,10), also ABDCA
hat dagegen nur eine Streckenlänge von 131.5298

Verstehe ich hier etwas in der Aufgabenstellung falsch?
Nein, das war ein Fehler von mir. Leider war ein Fehler in der Musterlösung. Der ist jetzt aber behoben ! 
-cf
++++++++++++++ Thu Jul 29 10:26:52 2004 ++++++++++++++
Hallo,

versteh folgendes nicht ganz im Vererbungsbsp auf S. 6-61 im Skript:
was macht das "const" in den get-Methoden, also beispielsweise in
string getname const { ... }
Das bedeutet, dass das Objekt in dieser Methode nicht verändert wird,
also konstant bleibt ("const").
- mg
Kleine Anmerkung meinerseits: Gemeint ist das aufrufende Objekt (also "*this").
-cf
++++++++++++++ Fri Jul 16 17:14:48 2004 ++++++++++++++
Nette Klausur :-)
Nette Teilnehmer!
- mg
++++++++++++++ Fri Jul 16 10:36:23 2004 ++++++++++++++
Vielen Dank für die tolle Klausur! Selten war es so unterhaltsam wie heute
(abstrakte Klasse, class selfish, etc *g*)

Wann ungefähr können wir mit den Ergebnissen rechnen?
Sie sind schon draussen ... siehe Mailbox oder SLC!
- mg

++++++++++++++ Thu Jul 15 16:56:49 2004 ++++++++++++++
Kurze Frage, da ich am Freitag leider keine Zeit hatte:
Was darf man eigentlich morgen alles in die Klausur mitnehmen ? (Skript,...)
Schon mal Danke fuer die schnelle Antwort :-)
Skript, Bücher, Ausdrucke - alles ausser Handy, Notebook ...
- mg
++++++++++++++ Fri Jul  9 18:51:11 2004 ++++++++++++++
Eine schoene Graphik zur geschichtlichen Entwicklung der Programmiersprachen
gibt's - nach monatelangem Suchen :) - unter
http://www.levenez.com/lang/
Puuh - wenigstens einer der mitdenkt ;-) und nicht aufgibt!
Danke - werds für die Nachkommen einbauen und neben dem Skript die Geschichte
auf einer Rolle Tapete verkaufen ;-)))

- mg
++++++++++++++ Thu Jul 8 11:41:44 2004 ++++++++++++++ eine Frage: warum in der Methode test ist die Länge des Array str[] immer 4, sondern nicht 60? Ist das nicht eine Referenz auf das Array str[] in main? #include <iostream.h> void test(char str[]){ int len = sizeof(str)/sizeof(char); cout << "len= " << len << endl; } main(){ char str[60]; test(str); int len = sizeof(str)/sizeof(char); cout << "len= " << len << endl; }
Nein - das ist keine Referenz auf das Array str in main. Der Name eines
Arrays ist in C/C++ bei der Parameterübergabe ein Zeiger auf das
1.Element. Also ist str in der Funktion test ein Zeiger - und Zeiger haben
bei der 32-Bit-Architektur typischerweise die Länge von 4 Bytes.
Die Größe von char ist 1 Byte.  4 geteilt durch 1 ist 4 - also wird in test
die Zahl 4 ausgeben. Im Hauptprogram weiss der Compiler über das "Objekt"
str, dass es eigentlich die Länge 60 hat - und gibt die richtige Zahl aus.
Ach ja - sizeof wird nämlich zur Compilezeit festgelegt. Also gibt es in
test keine andere Chance, als einen festen Wert anzunehmen - nämlich die
der Pointergröße für sizeof str ...
Deshalb: arbeitet mit Strings und dann gibt es die Method size, die die 
echte Größe des Strings in Bytes rausgibt ...

- mg
++++++++++++++ Fri Jul  2 00:23:19 2004 ++++++++++++++
ich möchte wissen, wieviele Leistungspunkte diese Vorlesung umfasst. Es steht
aber nicht auf der Webseite. danke!
6 Leistungspunkte bei den Informatikern. Dafür steht Prof. Schweiggert gerade ;-)
(Begründung: hoher Aufwand in den Übungen trotz 2/1 Vorlesung!)

- mg
++++++++++++++ Wed Jun 23 23:33:27 2004 ++++++++++++++
Wie sieht's denn aus, wenn man nur die Nachklausur mitschreiben will. Muss man
sich dann trotzdem für die erste Klausur anmelden und erscheinen um den Namen
aufs Blatt zu schreiben, oder kann man direkt in die Nachklausur gehen?
Bitte trotzdem fuer die Klausur anmelden (damit wir ein leeres Blatt
bereithalten :-) Und antanzen und Namen aufs leere Blatt schreiben.
Zur Nachklausur wird nur zugelassen, wer a) die Klausur nicht bestanden hat
oder b) sich mit trifftigen Grund entschuldigt hat. Die "Nachklausur" ist
aller Voraussicht nach eine mündliche Prüfung.

- mg
++++++++++++++ Tue Jun  1 14:47:15 2004 ++++++++++++++
C:/code/aufgabe3/loesung/bintree_rek.h:39: use of class template `template struct realtree' as expression

wie kann ich korrigieren?

template 
realtree<T> * insert(realtree<T> *tree,T content){
    if(!tree){
        realtree *tree=new realtree<T>;//?????????
        newTree->content=content;
        newTree->right=NULL;
        newTree->left=NULL;
        return newTree;
        }
    else if(contentcontent){
        tree->left=insert(tree->left,content);
        return tree;
        }
    else{
        tree->right=insert(tree->right,content);
        return tree;
        }
    }
    
So sollte es funktionieren:
      realtree<T> *tree=new realtree<T>;

-cf
++++++++++++++ Tue Jun  1 16:27:36 2004 ++++++++++++++
Hatten wir in der Vorlesung nicht, dass Templates nur in header dateien stehen
dürfen, siehe vek.h ? Oder hab ich das falsch verstanden? Weil das folgende
funktioniert:
cpp file:

template 
class BinTree {
	...
		public:
			BinTree(int (* func) (const T&, const T&));
....
Klar *dürfen* Templates auch direkt in Programmdateien stehen. Sie *sollten*
aber in Headerdateien stehen, da sie nur so in mehreren Modulen verwendet
werden können. Und das ist das Ziel eines Templates ("Schablone").

- mg
++++++++++++++ Fri May 28 14:51:13 2004 ++++++++++++++
Was soll denn passieren, wenn prim-- auf 2 aufgerufen wird? Auch eine
Exception??

Danke
Ja. Bitte.

++++++++++++++ Sat May  8 19:41:19 2004 ++++++++++++++
Ich fände es ganz praktisch, wenn ihr die Lösungen zu 
den Übungen in irgendeiner archivierten Form zum 
Download bereitstellen könntet, damit man sie nicht 
alle einzeln runterladen muß. Das wär' echt nett.
Schon geschehen !
 -cf

++++++++++++++ Mon May 10 06:07:31 2004 ++++++++++++++
Hi
#ifndef MOD1//????
#define EXTERN extern //const char* EXTERN=extern;
#else
#define EXTERN// ???
#endif
diese Code habe ich nicht verstanden!
können Sie mir erklaeren?Dank!!
mfg
Hallo mfg,
dat iss a wenig complicated, aber ich versuchs:
dat Problem iss, dass, wenn man mährere Module in C/++ zusammenlinken
will und ein Mogul von einem anderen seine Variable verwenden will, dann
jeht dat normalerweise mit

extern int ichwillwatvonnemanderenmodul;

Soweit soklar. Dat Mudol, dass nun ichwillwatvonnemanderenmodul als Variable
selbst anlegt, muss nun schreiben:

int ichwillwatvonnemanderenmodul;

Trivi bis hier - ich weiss! Nun aber wehre es natürlich nett, wenn das
Mugol, dass seine Variablen echsportiert, das in einem Headerfile der Welt
mitteilt, damit die anderen nur mähr "include" sagen müssen. Wat - dat iss nu die Frage - schreib ich da rein?
"int ichwillwatvonnemanderenmodul;" geht nicht, da dann die Variable in jedem
Modal, das die Headerdatei included, auch angelegt ("definiert") wird.
Dat wird dann dem Linker zuviel, weil der die Variable variabel oft (n>1)
findet. Dat mag der nicht.
Schreib ich aber in das Headerfile "extern int ichwillwatvonnemanderenmodul;"
und include das Teil selbst, dann wird die Variavle sowohl als extern und
in einem zweiten Schritt auch intern selbst noch bei "int ichwillwatvonnemanderenmodul;" definiert.
Auch uncool.
Nu kommt die Lösung, die oben steht:
in jedem Mohdul, in dem ich das obige Headerfile includen will,  da
tu ich dat einfach. Und der Priprozessor von C/++ macht dann daraus "extern",
weil ja MOD1 nicht definiert und dadurch EXTERN zu extern wird.
Im Moguhl, das nun wirklich die Variable anlegen will, schreibe ich vor
dem include:

#define MOD1

Damit ist der Makro EXTERN als  definiert, und in diesem einen Modul wird dann
wirklich via Preprozessor "int ichwillwatvonnemanderenmodul;" hingeschrieben.
Nix mehr mit extern oder so. Und dann findet das der Lincker ganz toll, weil
der nur an einer Stehle die Variable definiert und an allen andern Stellen
die Variable als extern deklariert findet.
Und wenn sie nicht gestorben sind ....
so ist das mit dem Code, nich?
Was die Zeile mit "//const char* EXTERN=extern;" soll, weissichauchnicht ...
woher soll die sein? Eigentlich muss es weitergehen mit:

EXTERN int ichwillwatvonnemanderenmodul;

Sonst macht das keinen Sinn ...
- mg

++++++++++++++ Wed May  5 13:58:43 2004 ++++++++++++++
Kann man das Skript irgendwo in gedruckter Form kaufen?
Ausdrucken ist ja wohl nicht unbedingt sinnvoll!

Schöne Grüße
 
In gedruckter Form gibt es das Script leider nicht zu kaufen.
Wir wollen aber eine Kopiervorlage in der Helmholzstrasse bereitstellen.
-cf
Wir *haben* eine Kopiervorlage in der Helmholzstrasse bereitgestellt ;-)
Ein Skript hab ich grad zuviel gedruckt und werde es bei Ebay versteigern.
Hier issa Link!

-mg
++++++++++++++ Fri Apr 30 19:39:59 2004 ++++++++++++++
Hallo erstma,
endlich darf ich mal wieder proggen.
Hatte schon Entzugserscheinungen. ;)

Allerdings habe ich ein Problem. Und zwar kann ich viele Templates aus der STL
nicht in mein Prog einbinden.
So bekomme ich z.B. bei #include  immer die Meldung cin, cout .. nicht
bekannt. Ebenso bei , , eigentlich allen streams etc.. Die
streams kann ich zum Glück noch mit den veraltete .h files includieren (hui
welch schönes Wort), bei string und vector schlägt jedoch alles fehl.
Habe in meiner .profile den richtigen Pfad gesetzt. Also sollte eigentlich alles
klappen.
Bew:
 theseus$ cat .profile
 #------------------------------------------------------------------------------
 # default profile
 # afb 11/90
 #------------------------------------------------------------------------------

 # default pagination program, alternatives are more and pg
 PAGER=/usr/local/bin/less
 export PAGER

 # default screen editor
 if [ -x /usr/local/bin/vim ]
 then    EDITOR=/usr/local/bin/vim
 else    EDITOR=/usr/ucb/vi
 fi
 VISUAL=$EDITOR
 export EDITOR VISUAL

 # default printer
 PRINTER=garamond
 LPDEST=$PRINTER
 export PRINTER LPDEST

 # c++ compiler
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

 #QT
 export QTDIR=/usr/local/qt-2.3.1
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib

 Wäre über Antwort glücklich. Achso und das lief übrigens mal alles...

 Btw. gibts eigentlich schon ne neue QT Version bei uns(uni)?
 Ist ja mittlerweile schon ver. 3.3.2 raus.
Hmm. Versuch mal im Programm folgende Zeile einzufügen:

using namespace std;	// Skript S.3.19 und S.3.22

Der alte Compiler 2.95 brauchte das nicht, die neuen g++ ab 3.0 schon.
Neuestes Qt iss nich. Bei wirklichem Bedarf (DiplArbeit, Seminar) bitte
an Christian Ehrhardt per Mail wenden, wir werden es in der Vorlesung nicht
brauchen.

- mg
++++++++++++++ Thu Apr 29 23:16:45 2004 ++++++++++++++
Ist es (für Informatik-Studenten) möglich die Prüfung in "C++ mit Data Mining
+Anwendungen" abzulegen, auch wenn man bereits die Prüfung in "Objektorientierte
+Softwareentwicklung mit C++" abgelegt hat, d.h. dürfen beide Fächer in einem
+Prüfungplan auftauchen?
Nein, die beiden Vorlesungen sind einfach zu ähnlich.
++++++++++++++ Fri Apr 23 15:05:56 2004 ++++++++++++++
Zwei Anmerkungen zur Vorlesung und dem Skript:
1. C ist, obwohl es Funktionen kennt und funktioniert, keine "funktionale
+Sprache", wie es in der Vorlesung gesagt wurde
2. C# wurde unter anderem von Herrn Wirth entwickelt, der Urvater von Pascal und
+dessen Nachfolger Delphi. ==> Viele Eigenschaften von C# sind dort auch schon
+vorhanden, etwa das Property-Konzept. Wo befindet sich diese Verbindung auf dem
+Diagramm. (Skript Seite 1-5)
2.a) Und ausserdem schadet eine Aktualisierung nicht. (Python, PHP, Ruby,
+Haskell, OCaml...)
1.Ok - es muss "prozedural" und nicht "funktional" heissen. Danke.
2.Das ist mir völlig (!) neu und da hätte ich gern die Quelle der 
Behauptung gesehen! 
Soll das wirklich *Nikolaus* Wirth von der ETH Zürich gewesen sein??
Nur die Tatsache, das Anders Heijlsberg sowohl beim Pascal-Dialekt Delphi wie
auch bei der Entwicklung von C# mitgewirkt hat, läßt m.E. nicht den Rückschluss
zu, dass Nikolaus Wirth konzeptionell hinter C# steckt.
Man findet bei den MS-Tutorials von C# primär Hinweise und Abgrenzungen und
Analogien zu C++ und Java und keine Hinweise auf Pascal&Co. Das viele Sprachen
(und dann auch noch deren Derivate) irgendwelche gemeinsamen Konzepte
haben - ist klar. C# ist ähnlich zu C++ und Java -  die Erzeugung von
maschinenunabhängigen Bytecode zielt eindeutig in Richtung Java.
(Beispiel)
2.a) Das eine Aktualisierung etwas schadet, hat glaub keiner behauptet ;-) 
und eine sinnvoll aktualisierte Grafik baue ich gerne ein. Her damit!

- mg
++++++++++++++ Fri Apr 23 14:04:07 2004 ++++++++++++++
Die Vorlesung ist ja auch bei Informatik  ausgeschrieben,
dort steht, das es 6 Leistungspunkte dafür gibt.
Ich glaube aber, daß es für 2V+1Ü nur 4 LPs gibt!
Jo - wie in der Vorlesung bereits gesagt: Prof. Schweiggert steht hinter
dieser "Be-Punktung" (Aufwand bei den praktischen Übungen!)
und will dies bei evtl. Anfragen des Prüfungsausschusses
vertreten. Bitte bei weiteren Fragen diesbezüglich direkt an ihn 
(swg@mathematik ....) wenden.
- mg
++++++++++++++ Fri Apr 23 11:01:44 2004 ++++++++++++++
Bei der Vorlesung :int &x=i;//die Adresse von x ist y???
//oder ist &x eine Befinition von Referenz?
"&x" erstellt eine Referenz auf i und "&" ist hier *kein* Adressoperator.
"Referenz" heißt in diesem Kontext, dass ich "x" und "i" synonym
(ohne weitere Operatoren) verwenden kann.
Der Zugriff auf den Wert von i über die Referenz ist dann auch einfach "x" und
nicht "*x", wie es bei einem Adressoperator/Pointer (int *x = &i) der Fall
gewesen wäre.
- mg


Zurück