Entwickler-Ecke
Open Source Projekte - science Class Library
ffprogramming - So 02.08.09 19:56
Titel: science Class Library
Was ist FF ClassLibrary?
FF ClassLibrary ist eine Bibliothek für .NET 3.5 (geschrieben in C#), die mehrere mathematisch-wissenschaftliche Klassen bereitstellt. Sie definiert den Namespace science.
Features
Ausgeben von Primzahlen
Finden des größten gemeinsamen Teilers (GGT)
kürzen von Brüchen
multiplizieren von Brüchen
In Planung
Addieren/subtrahieren von Brüchen
Dividieren von Brüchen (fast fertig)
Beispielcode zur Bestimmung des größten gemeinsamen Teilers:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using science; namespace test { class Program { static void Main(string[] args) { euklid ggt = new euklid();ggt.a = 12;ggt.b = 3; ggt.ggt(); Console.WriteLine(Convert.ToString(ggt.ggts));} } } |
Ich würde mich über Tipps/Ratschläge freuen.
Jakob_Ullmann - Do 06.08.09 11:55
Auch wenn mir bisher kein richtiger Verwendungszweck einfällt, sieht das schonmal gut bis jetzt aus (ich nehme an, das wird noch erweitert, oder?). Was mich noch interessieren würde:
- eine richtig kompfortable Klasse für Sortieralgorithmen. Wo man zum Beispiel nicht nur Zahlen sortieren kann, sondern beispielsweise auch structs (hätte jetzt fast records geschrieben :mrgreen: ), wo eine Eigenschaft für den Index ausschlaggebend ist (ließe sich doch mittels Events ganz gut lösen, macht aber Arbeit).
- FFT wäre auch mal cool.
- Summen, Produkte, Integrale
- neben ggt auch kgv
- Ideen gibt's genug!
Bei den Primzahlen:
Zitat: |
Please enter border! |
Ich glaube eigentlich nicht, dass
border da passt. Eher margin oder limit.
Kha - Do 06.08.09 18:35
Wenn du gerade beim Einstieg in OOP bist, ist Übung natürlich nie schlecht, aber für Funktionen wie GGT ist eine instanzierbare Klasse einfach
Overkill ;) . Für die Methoden von System.Math musst du ja auch keine Instanz erzeugen.
Vorschlag einer Umgliederung:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| static class MathEx { public static int Ggt(int a, int b); public static int[] GetPrimes(int limit); }
class Fraction { public Fraction(int numerator, int denominator); public static Fraction Mul(Fraction a, Fraction b); public Fraction Cancel(); public static Fraction Parse(string s); } |
Man könnte sich noch überlegen, statt Mul den *-Operator zu überladen, außerdem würde sich für Fraction ein struct anbieten, aber das ist wirklich nebensächlich.
Jakob_Ullmann hat folgendes geschrieben : |
eine richtig kompfortable Klasse für Sortieralgorithmen |
Komfortabel? Das nenne ich
absolute [
http://msdn.microsoft.com/en-us/library/3da4abas.aspx]
Grundfunktion [
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.orderby.aspx] ;P .
Jakob_Ullmann - Do 06.08.09 18:37
Wusste noch gar nicht, dass es in .NET ne eigene Sortier-Klasse gibt. Sollte ich mir wohl mal anschauen. :wink:
Kha - Do 06.08.09 19:46
Eine eigene Klasse ist es nun auch wieder nicht ;) . Und das, was du beschreibst - beliebige Daten mit einer Compare-Funktion zu sortieren - schafft auch TList.Sort und erst recht TList<T>.Sort.
ffprogramming - Mi 19.08.09 18:45
Tag!
Sorry das ich erst jetzt antworte. Aber ich war in Urlaub.
Ich weiß das es in C# eine bessere Möglichkeit gibt zu suchen. Ich habe einfach nur interessehalber Bubblesort hinzugefügt.
Ich denke die Bibilothek ist noch durch SINNVOLLE Methoden erweiterbar.
Liebe Grüße
Filip
--
Moderiert von
Kha: Beiträge zusammengefügt --
Leider habe ich von dem Verbesserungsvorschlag nicht alzuviel verstnaden.
Ich verstehe. dass du kein Objekt der Klasse erzeugen willst!
Leider habe ich nicht ganz verstanden wie du das anstellst.
Kha - Mi 19.08.09 19:06
Mit statischen Methoden bist du vertraut? Wenn nicht, würde ich mal im Galileo Open Book C# o.Ä. nachschlagen.
Die Signatur habe ich ja schon gepostet, du müsstest nur noch deinen bestehenden Code einfügen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| public static class MathEx { public static int Ggt(int a, int b) { ... } ... } |
Für weitergehende Frage, die nicht direkt mit dem Projekt zusammenhängen, solltest du aber lieber einen neuen Thread aufmachen.
ffprogramming - Mi 19.08.09 19:16
Ok danke für die Antwort!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!