Brüche
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.
-
-
Abend. Der User @Artentus: hat mal eine Klasse hier "veröffentlicht".
Ist zwar noch nicht ganz perfekt, aber schon sehr gut.
Hier ist der Link [VB.NET] Unbekannte Dezimalzahl als Bruch
Mit der Klasse (eigentlich Struktur) kannst du sogar schon rechnen. Cool ist, dass die Brüche direkt gekürzt werden, wenn möglich. -
-
Einfach eine Klasse erstellen und das ganze nutzen. Das sind afaik 2-3 Zeilen Code um damit zu rechnen.
Wo ist das Problem?"Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero
Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt! -
-
Sagen wir mal, du hast zwei Zahlen, X und Y. Wenn du X durch Y dividieren willst, ist das Ergebnis X/Y (einfach mal als Bruch vorstellen ;)). Jetzt zählst du von 1-X die Zahlen durch und prüfst dabei, ob die aktuelle Zahl (nennen wir sie mal Z) ein Teiler von X und Y ist. Wenn ja, teilst du beide Zahlen durch Z, speicherst sie ab und beginnst die Schleife von neu. Der Ablauf könnte so aussehen:
120 geteilt durch 60
-> 120/60
-> 60/30 (Z war bei 2)
-> 30/15 (Z war wieder bei 2)
-> 10/5 (Z bei 3)
-> 2/1 (Z bei 5)
Und schon hast du deinen Bruch :). -
Hey, die Klasse, die LaMiy gepostet hat, ist veraltet und nicht sehr sauber programmiert. Ich hab inzwischen aber eine bessere Programmiert, sie ist Teil von MathUtils:
[OpenSource] MathUtils 2.4.2 - erweiterte Mathematikbibliothek
Oder hier der Direktlink zum Code:
github.com/Artentus/MathUtils/…ter/MathUtils/Rational.cs -
-
-
-
-
-
»There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
-
-
-
@nafets3646:
nafets3646 schrieb:
Ein String ist wenn schon ein Char-Array
Das ist so nicht richtig. String und Char() sind unterschiedliche Datentypen. Auch wenn in C ein String so nicht vorhanden ist und gerne mal als Char-Array bezeichnet wird, da er aus Chars besteht, ist das trotzdem Umgangssprache. Beides sind zwar ebenfalls Referenztypen, jedoch sind sie nicht das gleiche.
Strings bestehen aus Chars, und Char() auch, jedoch ist String kein Char().
Der NameArray
passt hier also nicht. Ich würde eher Char-Kette dazu sagen, da sich mehrere Chars aneinander reihen, aber ein Array ist das keinenfalls, denn das zusammen sind unterschiedliche Datentypen, auch wenn man das in anderen Sprachen mal gern so bezeichnet.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum daDieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trade“ ()
-
Artentus schrieb:
Dafür ist meins schneller und weniger Speicherintensiv.mod
sehr inefizient ist, d.h. es zwar schön zu schreiben ist, doch in wirklichkeit dem Prozessor an die Wäsche gegangen wird... Hab leider aber dazu nicht einmal ein Agument, und würde mich freuen, wenn du meine Aussage verneinen könntestMit freundlichen Grüßen
GVI (Teil1/2): 80% -
Ein String ist eine IList<Char> und ein Char[] ist auch eine IList<Char>. Das Wort "Char-Array" wird wegen diesem Zusammenhang halt gerne verwendet, indem man eine IList<Char> als Char-Array bezeichnet. Im Prinzip ist das auch nicht wirklich falsch, denn ein String kann das selbe wie ein Char[], aber er kann halt noch mehr. Ein String ist also quasi ein verbessertes Char-Array. Wie nahe sich die beiden Klassen stehen sieht man auch daran, dass man sie ineinander konvertieren kann, ohne Informationen zu verlieren (widening-Konvertierung), und dass beide im Speicher fast identisch aussehen.
@lurker
Das hängt vom Prozessor (bzw. Mikrocontroller) ab. Wenn Modulo harwareseitig implementiert ist sollte es die gleiche Performance wie Ganzzahlteilung besitzen. Es es jedoch nicht implementiert, so muss das irgendwie so gelöst werden:
Das ist dann natürlich nicht mehr so schnell.
Ich bin auf dem Gebiet aber nicht sonderlich informiert, also kann ich dir da keine konkrete Antwort mit Beweis liefern. -
Hi
Modulo ist auch einfach durch eine Division umsetzbar, aber bereits bei der Division ist auf einem x86-Prozessor afaik der Rest einer Division von 2 32-Bit Ganzzahlen in den EDX abgelegt, insofern lädt man einfach das EDX-Register auf den Stapel oder dergleichen und hat Modulo gerechnet. Modulo an sich lässt sich wesentlich effizienter ausdrücken, als durch Artentus' Algorithmus, es ergibt sich einfach zu a - a/b * b, wenn / die abrundende Ganzzahldivision ist (ansonsten halt a - floor(a/b) * b).
Gruß
~blaze~ -