Sie sind nicht angemeldet.

Arne

ThI

  • »Arne« ist männlich

Beiträge: 1 798

Registrierungsdatum: 07.10.2002

Wohnort: Hannover :)

Beruf: Lecturer ThI

21

10.06.2004, 22:15

du hast auch nicht vergessen java.util.* zu importieren?
"NP - The class of dashed hopes and idle dreams." Complexity Zoo

Mac

Papa

  • »Mac« ist männlich

Beiträge: 645

Registrierungsdatum: 17.10.2002

Wohnort: Hannover

Beruf: IT Freelancer

22

10.06.2004, 22:20

Taucht in der Regel auf wenn er die Definition nicht finden kann. Hast du am Anfang der Datei die java.util eingebunden? In dem Package ist das Interface definiert.

edit: so was... war ja schon ne Antwort da. völlig übersehen...

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Mac« (10.06.2004, 22:22)


  • »Joachim« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

23

10.06.2004, 22:46

Zitat

Original von Rizzo
würde gerne mal wissen wie ihr die Sortierung nach den Ganzzahligen Teilern realisiert habt. Wir haben das Sieb des Eratosthenes benutzt mit einer Iteration bis Zahl/2. Leider ist dieses Verfahren bei besonders großen Zahlen nicht sehr effizient.

Hat vielleicht jemand Ahnung von Zahlentheorie und kennt bessere Verfahren?
Ahnung nicht wirklich, aber ich habe einen ganz netten Überblicksartikel gefunden: http://danae.uni-muenster.de/~lembeck/le…2_kirchhoff.pdf
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

np

Junior Schreiberling

Beiträge: 155

Registrierungsdatum: 23.10.2002

24

11.06.2004, 08:28

Zitat

Original von Rizzo
Hi,

würde gerne mal wissen wie ihr die Sortierung nach den Ganzzahligen Teilern realisiert habt. Wir haben das Sieb des Eratosthenes benutzt mit einer Iteration bis Zahl/2. Leider ist dieses Verfahren bei besonders großen Zahlen nicht sehr effizient.

Hat vielleicht jemand Ahnung von Zahlentheorie und kennt bessere Verfahren?

Hinweis: Es geht um ganzzahlige Teiler, nicht um Primteiler. D.h. du programmierst einfach eine Schleife, die für eine Zahl a alle Teiler <=a ausprobiert.

Primfaktorzerlegung erschien mir zu kompliziert als Aufgabe, obwohl es sehr schöne zahlentheoretische Formeln zur Abschätzung der Anzahl der Primteiler gibt, ohne diese tatsächlich anzugeben.

yv

Junior Schreiberling

  • »yv« ist weiblich

Beiträge: 229

Registrierungsdatum: 11.12.2001

25

11.06.2004, 14:12

design- pattern

Hallo,
meine Sortierungen laufen zwar, aber mit dem Design- Hinweis in der Aufgabenstellung habe ich Schwierigkeiten. Ist das Stichwort Singleton hier angebracht? Falls nicht, hat jemand einen anderen Tipp?

Danke schonmal!

np

Junior Schreiberling

Beiträge: 155

Registrierungsdatum: 23.10.2002

26

11.06.2004, 14:56

RE: design- pattern

Zitat

Original von yv
Hallo,
meine Sortierungen laufen zwar, aber mit dem Design- Hinweis in der Aufgabenstellung habe ich Schwierigkeiten. Ist das Stichwort Singleton hier angebracht? Falls nicht, hat jemand einen anderen Tipp?

Danke schonmal!

Anderer Tipp: Um die Kriterien zu trennen, muss irgendwann eine case-(oder if)-Abfrage stattfinden. Je "früher" desto besser für die Laufzeit.

yv

Junior Schreiberling

  • »yv« ist weiblich

Beiträge: 229

Registrierungsdatum: 11.12.2001

27

11.06.2004, 17:01

danke!

Das habe ich intuitiv mit switch (=case) gemacht, müsste aber laufzeitmäßig auch ok sein.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »yv« (11.06.2004, 17:06)


Uprooter

Junior Schreiberling

  • »Uprooter« ist männlich

Beiträge: 249

Registrierungsdatum: 07.10.2003

Beruf: Angw. Inf.

28

12.06.2004, 16:39

man braucht doch bei der eingabe der 2 einen komparator, der die beträge der einzelnen zahlen vergleicht, die methode im komparator bekommt 2 objekte, diese müssen aber in int-zahlen umgewandelt werden, damit ich die abs-methode benutzen kann, wie mache ich das?

DominionMADz

Junior Schreiberling

Beiträge: 165

Registrierungsdatum: 08.02.2002

Wohnort: SHG

29

12.06.2004, 19:01

int n = parseInt(obj1.toString());
bzw.
int m = ((Integer)obj1).intValue();

mfg

Marco

Shadow

... mit bunten Sternchen und so

  • »Shadow« ist männlich

Beiträge: 838

Registrierungsdatum: 21.12.2001

Wohnort: Hamburg

30

12.06.2004, 23:21

Zitat

Original von DominionMADz
int n = parseInt(obj1.toString());
bzw.
int m = ((Integer)obj1).intValue();
Letzteres ist die sauberere und schnellere Variante, da sie ohne den Umweg über einen String arbeitet, der dann wieder geparst werden müsste.

Shadow
"Man hält die Erzeugung von Information für ein Zeichen von Intelligenz, während in Wirklichkeit das Gegenteil richtig ist: Die Reduktion, die Auswahl der Information ist die viel höhere Leistung."
-- Heinz Zemanek

Sinan

Senior Schreiberling

  • »Sinan« ist männlich

Beiträge: 1 020

Registrierungsdatum: 05.07.2003

Wohnort: Hannover

Beruf: Oracle Database Administrator

31

13.06.2004, 13:53

Zitat

Original von vier
Wäre von Vorteil, wenn du auf die letzte Seite der Folien guckst


Zitat

Original von Uprooter
achso, du meinst den komparator der auf der seite steht..der vergleich einfach 2 vektoren(deren Länge?) und gibt 1,-1 oder 0 aus, ist mir nicht so klar, wie ich es bei der 7 übung anwenden soll, so dass es schneller geht als mit reverse(siehe oben).


Da ich die Aufgebe schon gelöst hab und noch n bisschen Zeit übrig blieb, habe mir die Folien nur so "Spaßhalber ;)" angeschaut, und ehrlich gesagt:
WEDER auf der letzten NOCH auf einer anderen Seite habe ich was gefunden, das mit der Aufgabe zu tun hat ?(

Oder redet ihr vielleicht von anderem Skript als dies hier :D
Skript (Teil 7)
With great power comes great responsibility

Uprooter

Junior Schreiberling

  • »Uprooter« ist männlich

Beiträge: 249

Registrierungsdatum: 07.10.2003

Beruf: Angw. Inf.

32

13.06.2004, 15:37

ich bin langsam am verzweifeln: ich habe einen comparator geschrieben, wie übergebe ich ihn denn an die sort-methode sort(List l, Comparator c) ?
Hierbei bekomme ich eine Fehlermeldung:
Comparator c=ComparatorBla.compare();
Collections.sort(l,c);

  • »Joachim« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

33

13.06.2004, 16:50

Zitat

Original von Uprooter
ich bin langsam am verzweifeln: ich habe einen comparator geschrieben, wie übergebe ich ihn denn an die sort-methode sort(List l, Comparator c) ?
Hierbei bekomme ich eine Fehlermeldung:
Comparator c=ComparatorBla.compare();
Ich nehme mal an, daß ComparatorBla das Interface Comparator implementiert. Dann kann diese Zuweisung nicht funktionieren, da die compare-Methode dieser Klasse kein Objekt vom Typ Comparator zurückliefert. Zudem ist compare nicht als static deklariert und daher nicht als Klassenmethode aufrufbar.

Zitat

Collections.sort(l,c);
Du mußt der sort-Methode ein Objekt vom Typ Comparator übergeben. Zum Beispiel so: Collections.sort(l, new ComparatorBla());
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Arne

ThI

  • »Arne« ist männlich

Beiträge: 1 798

Registrierungsdatum: 07.10.2002

Wohnort: Hannover :)

Beruf: Lecturer ThI

34

13.06.2004, 16:52

Zitat

Original von Sinan
Da ich die Aufgebe schon gelöst hab und noch n bisschen Zeit übrig blieb, habe mir die Folien nur so "Spaßhalber ;)" angeschaut, und ehrlich gesagt:
WEDER auf der letzten NOCH auf einer anderen Seite habe ich was gefunden, das mit der Aufgabe zu tun hat ?(

Oder redet ihr vielleicht von anderem Skript als dies hier :D
Skript (Teil 7)


Ich hab von Seite 45 in Teil 6 geredet (http://www.gdv.uni-hannover.de/download.…6.pdf&type=misc).
Als ich das geschrieben hab, gab es Teil 7 noch nicht online.
"NP - The class of dashed hopes and idle dreams." Complexity Zoo

Uprooter

Junior Schreiberling

  • »Uprooter« ist männlich

Beiträge: 249

Registrierungsdatum: 07.10.2003

Beruf: Angw. Inf.

35

13.06.2004, 17:11

@Joachim:
Ja ComparatorBla implementiert Comparator und er verlang auch, dass compare() static ist, damits geht, aber irgendwie hiflt mie das nicht weiter, bei der obigen frage.

Collections.sort(l, new ComparatorBla());, das hilft auch nicht weiter, weil ComparatorBla keinen von mir definierten konstruktor besitzt... klar was ich meine?

  • »Joachim« ist männlich

Beiträge: 2 863

Registrierungsdatum: 11.12.2001

Wohnort: Hämelerwald

Beruf: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

36

13.06.2004, 17:28

Zitat

Original von Uprooter
Ja ComparatorBla implementiert Comparator und er verlang auch, dass compare() static ist, damits geht, aber irgendwie hiflt mie das nicht weiter, bei der obigen frage.
Wieso static? Der sort-Methode muß man sowieso ein Objekt übergeben und keine Klasse. In der Doku von Comparator steht auch kein Wort von Klassenmethoden.

Zitat

Collections.sort(l, new ComparatorBla());, das hilft auch nicht weiter, weil ComparatorBla keinen von mir definierten konstruktor besitzt...
Dann schreib einen bzw. nimm den Default-Konstruktor.
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Joachim« (13.06.2004, 17:30)


Arne

ThI

  • »Arne« ist männlich

Beiträge: 1 798

Registrierungsdatum: 07.10.2002

Wohnort: Hannover :)

Beruf: Lecturer ThI

37

13.06.2004, 18:37

Zitat

Original von Uprooter
@Joachim:
Ja ComparatorBla implementiert Comparator und er verlang auch, dass compare() static ist, damits geht, aber irgendwie hiflt mie das nicht weiter, bei der obigen frage.
?


compare() darf nicht static sein, da es bei der Vererbung durch das Interface auch nicht static gesetzt ist.
Definiere die jeweilige compare() Methode und benutze es so wie schon Joachim korrekt gesagt hat.
"NP - The class of dashed hopes and idle dreams." Complexity Zoo

Uprooter

Junior Schreiberling

  • »Uprooter« ist männlich

Beiträge: 249

Registrierungsdatum: 07.10.2003

Beruf: Angw. Inf.

38

14.06.2004, 00:12

boah ich hab doch zugestimmt, dass compare() nicht static sein soll, der compiler wollts aber für die zuweisung haben, das hab ich gemeint.
ja wenn ich dann an sort ein Objekt der klasse ComparatorBla übergebe, was hat dann compare() damit zu tun? sort soll doch mit compare() was anfangen und nciht mit was anderem oder irre ich mich da?

np

Junior Schreiberling

Beiträge: 155

Registrierungsdatum: 23.10.2002

39

14.06.2004, 08:23

Zitat

Original von Uprooter
boah ich hab doch zugestimmt, dass compare() nicht static sein soll, der compiler wollts aber für die zuweisung haben, das hab ich gemeint.
ja wenn ich dann an sort ein Objekt der klasse ComparatorBla übergebe, was hat dann compare() damit zu tun? sort soll doch mit compare() was anfangen und nciht mit was anderem oder irre ich mich da?

Weil in Java Funktionen/Methoden keine "first-class"-Daten sind (also nicht als Funktionsparameter übergeben werden können), geht man folgenden Umweg:

1. Definiere ein Interface (hier Comparator), dass über eine Methode verfügt, die die gewünschte Signatur hat (hier compare).
2. Implementiere das Interface in einer Klasse (hier ComparatorBla), so dass die Methode wie gewünscht überschrieben wird.
3. Übergebe ein Objekt der Klasse als Parameter.

Man übergibt also eine Methode, indem sie in ein Objekt "verpackt" wird. Weil die neue Klasse das Comparator-Interface implementiert, weiß die sort-Methode ja, wie die compare-Funktion heißen muss (nämlich compare) und kann sie dann aufrufen.

Die Methode darf nicht static sein, weil sie ja von sort in später Bindung aufgerufen werden muss. Das geht mit static nicht.

Das Prinzip war kurz auch bei "Anonyme Klassen" erklärt worden, man muss das aber nicht mit anonymen Klassen lösen, "normale" Klassen reichen auch.

Dieses Idiom ist in C++ auch als "Funktor" bekannt, es ist eine Vorstufe zum "Command"-Pattern.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »np« (14.06.2004, 08:24)


Uprooter

Junior Schreiberling

  • »Uprooter« ist männlich

Beiträge: 249

Registrierungsdatum: 07.10.2003

Beruf: Angw. Inf.

40

14.06.2004, 21:20

danke, danke, danke, endlich hats jemand mal richtig erklärt :)