midgard
Anmeldungsdatum: 2. Juni 2008
Beiträge: 39
|
Hi, ich habe heute mein erstes GTK-Projekt fertig gestellt. Also fertig ist es noch nicht ganz. Bevor ich aber weitermache wollte ich erstmal eure Meinung dazu hören. Mein Programm heisst "isPrime" und überprüft eine Zahl dahingehend ob es eine Primzahl ist. Ausserdem lassen sich auch Primzahlen in einem bestimmten Bereich suchen. Ich habe dieses Programm geschrieben um mich in erster Linie etwas in Sachen GTK-Programmierung zu skillen. Vielleicht melde ich dieses Projekt aber auch bei Sourceforge an. Hier ein paar Screenshots:
Ungültiges MakroDieses Makro ist nicht verfügbar Ungültiges MakroDieses Makro ist nicht verfügbar Das Programm (inkl. SourceCode) befindet sich im Anhang.
Installationshinweise: Ich habe ein kleines Shellscript geschrieben welches das Programm automatisch kompiliert. Dazu einfach die ./install.sh im Programmverzeichnis ausführen. Evtl. vorher das Programm als ausführbar kennzeichnen. Zum Kompilieren (und zum Erstellen der GUI) benötigt man die aktuellen GTK-Header. Eine Installation des Programms könnte wie folgt aussehen: sudo apt-get install libgtk2.0-dev
chmod u+x install.sh
./install.sh Der Installer schreibt die Binary nach "bin/isPrime.bin". Zum Ausführen sollte man das Programm wieder als ausführbar kennzeichnen. Danach sollte man es starten können: chmod u+x bin/isPrime.bin
bin/isPrime.bin Leider gibt es auch noch ein paar Bugs (Das Programm ist noch nicht fertig 😉). Ich bin aber zuversichtlich das ich diese in Zukunft noch ausmerzen werde. Viel Spass erstmal.
- isPrime.tar.gz (30.5 KiB)
- Download isPrime.tar.gz
|
e1bart0
Anmeldungsdatum: 12. Mai 2007
Beiträge: 927
Wohnort: München
|
Hi, schönes Programm hast du da. Die GUI gefällt mir. ☺ Ich hatte beim Testen jedoch ein Problem mit der Update GUI-Option: Wenn ich eine Primzahl > 10 eingegeben habe, hat sich das Programm aufgehängt: Ungültiges MakroDieses Makro ist nicht verfügbar
Ungültiges MakroDieses Makro ist nicht verfügbar
Ohne die Option hat es funktioniert. Ein paar Anregungen:
Die Primzahlsuche ist relativ langsam (als Anregung: hier ist ein in Python geschriebener, wirklich schneller Algorithmus um Primzahlen zu generieren). Es wäre schön, wenn man durch die Liste der Primzahlen scrollen könnte. Statt ein Shell-Script schreibt man normalerweise ein Makefile, oder benutzt ein anderes Build-System. In den Dateien steht nirgendwo etwas über die Lizenz. 😉
|
midgard
(Themenstarter)
Anmeldungsdatum: 2. Juni 2008
Beiträge: 39
|
Hi, danke für die Resonanz. Das mit "Update-Gui" tritt bei mir so nicht auf. Seltsam. Ich werde noch mal drüber schauen. 😉 Die Primzahlsuche ist meines Wissens nach nur sehr langsam wenn die Update-GUI Funktion aktiviert ist. Aber das kannst du jetzt natürlich nicht testen wenn das nicht so richtig hinhaut. 😉
Ich werde mir demnächst mal diesen Python Algorithmus angucken und gegebenfalls in C portieren. Die anderen Anregungen finde ich in Ordnung und werde sie schnellstmöglich implementieren. Vielen Dank
|
e1bart0
Anmeldungsdatum: 12. Mai 2007
Beiträge: 927
Wohnort: München
|
midgard schrieb: Hi, danke für die Resonanz. Das mit "Update-Gui" tritt bei mir so nicht auf. Seltsam. Ich werde noch mal drüber schauen. 😉
Könnte daran liegen, dass ich KDE verwende? Die Primzahlsuche ist meines Wissens nach nur sehr langsam wenn die Update-GUI Funktion aktiviert ist. Aber das kannst du jetzt natürlich nicht testen wenn das nicht so richtig hinhaut. 😉
Oh, ich habe gerade bemerkt, dass, wenn die Update GUI-Option deaktiviert ist, auch die Primzahlsuche sehr schnell ist. ☺
|
midgard
(Themenstarter)
Anmeldungsdatum: 2. Juni 2008
Beiträge: 39
|
Hi,
Könnte daran liegen, dass ich KDE verwende?
Hm...keine Ahnung. Ich werde morgen mal Kubuntu in einer Virtuellen Maschine installieren und es mal testen.
Oh, ich habe gerade bemerkt, dass, wenn die Update GUI-Option deaktiviert ist, auch die Primzahlsuche sehr schnell ist. ☺
Ja, es ist erstaunlich was für Rechenleistung nötig ist "nur" um die Gui "upzudaten". ☺
|
BodomBeachTerror
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Hallo, ich habe dein Programm zwar nicht getestet, aber vielleicht kannst du noch eine Funktion reinbauen, wenn die Zahl keine Primzahl ist, dass sie dann in ihre Faktoren zerlegt wird. Also z.B. 8 = 2*2*2 oder 33 = 2*2*2*2*2 * 3 Das habe ich mal in einem andren Primzahlen Prgramm gesehen und fand die Funktion eigneltich auch nicht schlecht.
|
Keba
Ehemalige
Anmeldungsdatum: 24. Juli 2007
Beiträge: 3802
|
Schönes Programm! Bei mir hakt es sich auf, wenn ich mal auf die Idee komme alle Primzahlen von "1000 bis 100000000" oder so zu suchen und dann auf "Abort" klicke. @ Primzahlenzerlegung: Soweit ich weiß, gibt es dazu nicht wirklich einen Algorithmus, es geht also nur, indem man testet, ob die Zahl durch 2 teilbar ist, wenn ja, teilt man sie durch zwei und fängt von vorne an, wenn nicht, dann teilt man sie durch 3 usw... Dauert dann aber bei größeren Zahlen etwas, besonders da man ja erstmal alle Primzahlen rauskriegen muss (nur damit macht es Sinn, sie dadurch zu teilen IMHO)... naja, vllt. geht da ja was.
|
midgard
(Themenstarter)
Anmeldungsdatum: 2. Juni 2008
Beiträge: 39
|
Hi, BodomBeachTerror schrieb: Hallo, ich habe dein Programm zwar nicht getestet, aber vielleicht kannst du noch eine Funktion reinbauen, wenn die Zahl keine Primzahl ist, dass sie dann in ihre Faktoren zerlegt wird.
Die Idee gefällt mir. Sollte von der Realisierung jetzt auch nicht zu schwer sein. Ich denke ich werde dies in einer kommenden Version einbauen. Keba schrieb: Bei mir hakt es sich auf, wenn ich mal auf die Idee komme alle Primzahlen von "1000 bis 100000000" oder so zu suchen und dann auf "Abort" klicke.
Das passiert bei mir auch. Also werde ich auch dort nochmal nach dem Fehler suchen. 😉
|
Vain
Anmeldungsdatum: 12. April 2008
Beiträge: 2503
|
Hallo Primzahlmann ☺, für ein Lernprojekt ist das sicher mal ganz interessant, sowas zu machen. Zwei Sachen sind mir noch aufgefallen:
Mach' vielleicht die GUI etwas flexibler. Ich habe nicht das normale "Sans" (welches auch immer) als GTK-Font sondern Terminus und dadurch ist hier alles etwas verschoben/überlappt. Damit muss man immer rechnen, dass andere Leute andere Fonts nutzen, also einfach absolute Pixelangaben bzw. absolute Größen vermeiden. Es spuckt beim Kompilieren einen Haufen Warnings raus. Vielleicht liegt das an den neueren Versionen, die ich hier habe (GTK ist 2.12.11 im Vergleich zu Ubuntus 2.12.9, außerdem gcc 4.3.2 bei mir und 4.2.3 bei Hardy - ich tippe mal auf den gcc 😉), und vielleicht weißt du das eh schon, aber ich hab's dir mal hier hingestellt: isPrime-Warnings.
Zu Punkt 2: Wenn ich das richtig in Erinnerung hab', müsstest du da diese elenden Makros drumrumsetzen... kann mich irren, aber imo müsste das z.B. in Zeile 94 so aussehen:
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(program->pgb_prime), 1.0);
Frag' mich aber nicht, wo/ob das dokumentiert ist...
|
Keba
Ehemalige
Anmeldungsdatum: 24. Juli 2007
Beiträge: 3802
|
Vain schrieb: Es spuckt beim Kompilieren einen Haufen Warnings raus. Vielleicht liegt das an den neueren Versionen, die ich hier habe (GTK ist 2.12.11 im Vergleich zu Ubuntus 2.12.9, außerdem gcc 4.3.2 bei mir und 4.2.3 bei Hardy - ich tippe mal auf den gcc 😉), und vielleicht weißt du das eh schon, aber ich hab's dir mal hier hingestellt: isPrime-Warnings.
Ah, das wollte ich auch noch schreiben, sorry. Kann ich also bestätigen. Hab Hardy ohne gcc oder GTK aktualisiert zu haben...
|
midgard
(Themenstarter)
Anmeldungsdatum: 2. Juni 2008
Beiträge: 39
|
Vain schrieb: Mach' vielleicht die GUI etwas flexibler. Ich habe nicht das normale "Sans" (welches auch immer) als GTK-Font sondern Terminus und dadurch ist hier alles etwas verschoben/überlappt. Damit muss man immer rechnen, dass andere Leute andere Fonts nutzen, also einfach absolute Pixelangaben bzw. absolute Größen vermeiden.
Oh, daran habe ich gar nicht gedacht. 😉 Bin aber echt noch GTK-Anfänger. Habe also nicht wirklich eine Ahnung wie ich das realisieren könnte.
2. Es spuckt beim Kompilieren einen Haufen Warnings raus. Vielleicht liegt das an den neueren Versionen, die ich hier habe (GTK ist 2.12.11 im Vergleich zu Ubuntus 2.12.9, außerdem gcc 4.3.2 bei mir und 4.2.3 bei Hardy - ich tippe mal auf den gcc 😉), und vielleicht weißt du das eh schon, aber ich hab's dir mal hier hingestellt: isPrime-Warnings.
Ne, das ist schon korrekt wie du das schreibst. Diese Warnungen kommen bei mir auch. Ich wusste aber bisher nicht wo die herkommen und da das Programm so erstmal funktionierte habe ich einfach weitergemacht.
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(program->pgb_prime), 1.0);
Ja danke, ich werde das mal übernehmen und schauen ob die Warnungen dann weg sind.
|
gyger
Anmeldungsdatum: 2. September 2007
Beiträge: 71
|
Keba schrieb: @ Primzahlenzerlegung: Soweit ich weiß, gibt es dazu nicht wirklich einen Algorithmus, es geht also nur, indem man testet, ob die Zahl durch 2 teilbar ist, wenn ja, teilt man sie durch zwei und fängt von vorne an, wenn nicht, dann teilt man sie durch 3 usw... Dauert dann aber bei größeren Zahlen etwas, besonders da man ja erstmal alle Primzahlen rauskriegen muss (nur damit macht es Sinn, sie dadurch zu teilen IMHO)... naja, vllt. geht da ja was.
Es gibt verschieden gute Möglichkeiten zum Berechnen von Primzahlen. Die Wiki bietet da aber schon einige Anhaltspunkte.
Primzahltest
|
BodomBeachTerror
Anmeldungsdatum: 24. März 2008
Beiträge: 788
|
Hallo, mir war langweilig und weil cih grad am Qt lernen bin hab ich mir gedacht ich mach auch mal so ein Programm welches Primzahlen berechnet (nicht so umfangreich wie das andre hier). Ihr könnt es euch im Anhang runterladen, der source code ist auch dabei. Ihr braucht zum ausführen die Qt4 bibliotheken und zum kompieleren die Qt4 dev Pakte, gcc und g++. Bekommt man glaub ich mit sudo apt-get install libqt4 (libqt4-dev gcc g++). @midgard ich hoffe dich stört es nicht das ich mein Programm auch isPrime nur mit einem "Qt Version" dahinter genannt hab 😉 PS: Wenn ihr selber kompilieren solltet geht in den ordner src und dort sollte ein einfaches make reichen. Wenn ihr alles selber kompileiren wollt macht qmake -project, dann qmake und dann make.
- isprimeqt4.tar (80.0 KiB)
- Download isprimeqt4.tar
|
midgard
(Themenstarter)
Anmeldungsdatum: 2. Juni 2008
Beiträge: 39
|
Hi, BodomBeachTerror schrieb:
@midgard ich hoffe dich stört es nicht das ich mein Programm auch isPrime nur mit einem "Qt Version" dahinter genannt hab 😉
Hm..also eigentlich stört mich das jetzt schon. 😉 Warum machst du nicht einfach einen eigenen Thread für dein Programm auf?
|
Sauer2
Anmeldungsdatum: 5. Mai 2008
Beiträge: 496
|
midgard schrieb: Hi, BodomBeachTerror schrieb:
@midgard ich hoffe dich stört es nicht das ich mein Programm auch isPrime nur mit einem "Qt Version" dahinter genannt hab 😉
Hm..also eigentlich stört mich das jetzt schon. 😉 Warum machst du nicht einfach einen eigenen Thread für dein Programm auf?
"Krime" 😀
|