zur Startseite zum Inhalt zur Navigation

Gedanken_leser

 

Zugegeben der Name ist etwas irreführend, aber unter 
diesem Namen habe ich das Programm kennengelernt.

Worum es geht.

Der User denkt sich 5 Ganzzahlen aus. Verrechnet 
diese mittels + , - so das er Jede Zahl einmal 
benutzt hat. Dann gibt er die 5 Zahlen und das 
Ergebnis ein. Das Programm berechnet dann die 
Benutzen Rechenoperationen.

Im Prinzip total sinnlos also das Programm.

Es geht hierbei aber weniger um die Funktion ( Auch 
wenn das Programm fast Perfekt funktioniert ), sondern 
mehr darum das ich hier mal zeigen will wie man 
generell mit unterschiedlichen Programmen das Selbe 
erreichen kann.

Implementiert sind 3 Verfahren, jeweils mittels einem 
Berechne Button.

Berechne1 : Ermittlung des Ergebnis Iterativ

Berechne2 : Ermittlung durch Raten

Berechne3 : Ermittlung durch Rekursion

Leider ist Berechne2 nur dann sinnvoll wenn das 
Ergebnis tatsächlich berechenbar ist. ( wenn nicht 
Terminiert das Programm niemals ). Wenn das Ergebnis 
tatsächlich ermittelbar ist, dann ist Berechne2 
allerdings im Mittel deutlich schneller als die 
beiden anderen Verfahren.

Schaut euch also den Source an und überlegt selbst 
welche Variante ihr Vorziehen würdet.

Mir gefällt Berechne1 natürlich am Besten weil es am 
wenigsten Speicher benötigt und mir das auch als 1. 
eingefallen ist. Berechne3 ist aber genau so schnell, 
und mal abgesehen vom unnötigen Stack Aufbau auch 
gleichwertig.

Berechne2 ist Elegant, aber dank der nicht 
Terminieren Funktion ( die sich durch eine oberere 
Schranke ausbauen Liese [man könnte die versuche 
Zählen und nach maximal 2^5 = 32 versuchen, so lange 
brauchen die anderen Programme nämlich, abbrechen 
und als nicht gültige Lösung erkennen. Dies 
bedeutete aber das bei ungünstigen Fällen Korrekte 
Lösungen als nicht Korrekt erkannt würden.]) leider 
nicht unbedingt optimal.

 

(7511 Hits)

 

  weihnachtsstern     qprogrammer     quadtree     network_delay     serial     picam     bezier     trio     pwm     simple_font     greenfoot     network_bandwidth_limiter     l_system     button_tool     tipp_it     4_gewinnt     proto     fpc_depencies     anty_krypt     updater     exp_func     feder_masse     newton     xml     gorilla     tippsy3     wuerfelzauber     screeny     klab     rubik_cube     zauber     c_depencies     pentago     fingerspeed     wii_headtrack     bmp_font     kollision     delforlaz     tokenizer     bww     balanced2     bitverknupfung     5ermedian     digiman     gedanken_leser     vedische_multiplication     sortieren     summe_n     imageinspector     td     pingpong     ascii     mandelbrot     fir_iir     bignumber     loop     multilanguage     crc     fourier     proof2e1     raetsel     tetris     diffusionsfilter     episodenmanager     lzw     vokabel     network_listener     textur_filterung     lazcomment     dithering_filtering     sfxr     stereoprojektion     fouriersynthese     dcommenter     ctools     chunkmanager     socket     ccm     sudoku     dcf77     schachprobleme     kartei     nsudoku     parken     clear_engine     clickomania     calender     ntools     einstein     sirpinksy     turing_maschine     mastermind     attributgrammatik     puzzle     race_condition     balanced     partikelengine     galton_brett     game_of_life     induktion     file_transfer     trackball     rubik_cube2