Folgende Warnungen sind aufgetreten:
Warning [2] unserialize(): Error at offset 2711 of 2829 bytes - Line: 2627 - File: inc/functions.php PHP 8.3.4 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
[PHP] errorHandler->error_callback
/inc/functions.php 2627 unserialize
/inc/class_datacache.php 138 native_unserialize
/inc/init.php 182 datacache->cache
/global.php 20 require_once
/showthread.php 28 require_once
Warning [2] unserialize(): Error at offset 1195 of 1968 bytes - Line: 2627 - File: inc/functions.php PHP 8.3.4 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
[PHP] errorHandler->error_callback
/inc/functions.php 2627 unserialize
/inc/class_datacache.php 138 native_unserialize
/inc/init.php 182 datacache->cache
/global.php 20 require_once
/showthread.php 28 require_once




Themabewertung:
  • 1 Bewertung(en) - 3 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Programmieren Projekt-Ideen
#11
Na mal schaun, ob man irgendwie die Cookies löschen kann.
Eventuell reicht es ja auch schon, den WebBrowser, der beim Framework standartmäßig dabei ist, einfach neu zu instanzieren, aber ob dann alle Cookies weg sind, kann ich nicht sagen.



PS:
Ich hab ihn mir angeschaut. Wer bist du da? Lachen
Da ist so ne schwarz-haarige dabei, die sieht ganz nett aus xD
Pessimisten sind realistisch.
Optimisten sind glücklich.

Programmieren ist einfach, jeder kann es lernen.
Doch gut programmieren, das ist die Kunst.
Zitieren
#12
Ich hab ein eigenes Projekt angefangen :
ein Programm zum errechnen von Nullstellen/y-achsenabschnitten/etc. von Funktionen.
Das alles will ich mit Java schreiben und es soll nur ein einfaches Konsolenprogramm sein.
Für die Umsetzung der 'Formeln' fehlen mir aber die Ideen. Weiß jemand Rat ?
Hinauf, hinauf zum Schloss!
Zitieren
#13
Das wird kompliziert, außer es gibt Methoden, die eine mathematische Formel nach x auflösen, also den Wert ausrechnen können.
Das wird schwierig, wenn du das selber machen willst, denn du musst dazu die Formel nach x umstellen und wie du das anstellst, kann ich dir nicht sagen.

In einem Forum hat aber jemand mal einen Parser für mathematische Formeln veröffentlicht und erklärt. Ich habs mir noch nicht durch gelesen und weiß daher auch nicht, wie das funktioniert.

Und für dich geht das sowieso nicht, da das C# ist und Java die C#-DLLs nicht so ohne weiteres verstehen kann. Das geht zwar, aber ich weiß nicht wie. Ein Freund sagte mal, dass man dafür eine Bridge in Sprachen, wie C++ braucht, die dann die Daten von Java anpasst, an die DLL gibt und die Daten der DLL wieder anpasst und an Java zurück reicht.
Pessimisten sind realistisch.
Optimisten sind glücklich.

Programmieren ist einfach, jeder kann es lernen.
Doch gut programmieren, das ist die Kunst.
Zitieren
#14
Ich könnte mir natürlich so etwas angucken (wozu ich offengestanden keine Lust habe), aber ich habe schon den Ehrgeiz es selbst zu machen Lachen
z.b. lineare Funktion y=mx+n , ist einfach : mit den Werten (x,y,m n=y-x*m) ; (x,y,n (y-n)/m) ; (x,n,m y=m*x+n) ; (y,n,m x=(y-n)/m)

also die ersten 3 Werte sind die Variablen, für die man die Werte einfach in die Konsole eingeben kann (über ne Inputclass oder als Parameter) und das danach ist dann die Formel für den PC.
für lineare Funktionen ist das noch nicht schwer, aber quadratische oder exponetiale Funktionen wirds kompliziert.
Hinauf, hinauf zum Schloss!
Zitieren
#15
Lineare Funktionen sind wirklich noch im machbaren Bereich.

Um das zu machen, muss die Formel strengen Regeln unterliegen, dass dein Programm sie interpretieren kann. Sobald die nicht mehr so geschrieben ist, dann wirst du da vermutlich nicht viel machen können. Ich wüsste auch nicht, wie ich es schaffen soll, dass ein Programm eine mathematische Gleichung interpretieren soll.

Und ja, es wäre sinnvoll, da eine Klasse zu bieten, die dann alle Werte der Gleichung beinhaltet. Das ist ja nicht weiter schwer.

Wie du die Eingabe dann passend in eine Referenz dieser Klasse bekommst, das musst du wissen.
Ich kann dafür auf einige Methoden der Klasse String zurück greifen, die mir umfangreiche Bearbeitung der Eingabe ermöglichen, oder ich lasse mir die Eingabe als Array vom Typ char zurück geben und kann so die Eingabe Zeichen für Zeichen leicht durch gehen und auswerten.

Wie das geht, weiß ich aber nur in C#.



PS:

Quadratische Funktionen müsstest du ähnlich behandeln und alle anderen Formen von Funktionen genauso.
Aber dann müssen die alle strenge Regeln bei der Eingabe haben, da du sonst weitere Eingabe-Möglichkeiten dem Programm beibringen musst, oder eine Möglichkeit findest, wie es die Gleichung direkt interpretieren kann.
Und zur Info: Die Klassen, die die Gleichungen interpretieren, das was ich im Forum gefunden habe, ist sehr kompliziert und umfangreich.

Lineare Gleichungen gehen noch, aber wenn du mehr willst, solltest du das auf deine To-Do-Liste setzen. Ist nämlich ein sehr frustrierendes Vorhaben. Ich habs versucht und mich hats klein bekommen, bis ich aufgegeben habe.
Pessimisten sind realistisch.
Optimisten sind glücklich.

Programmieren ist einfach, jeder kann es lernen.
Doch gut programmieren, das ist die Kunst.
Zitieren
#16
Ich hatte es mir insgesamt so überlegt :
in der mainmethod wirst du zu den jeweiligen geforderten Funktionstyp (jeweils eigene Methoden) geleitet und dort wird dann in einem Verzweigungsbaum (am besten eignetet sich die switch-case-verzwigung dafür) der jeweilige Rechenschritt vollführt. Durch genaue Variablenbelegung dürfte es kein Problem sein, dies alles in einer Klasse zu machen.
Hinauf, hinauf zum Schloss!
Zitieren
#17
Also ich würde es anders machen. Und zwar so:


Ich würde ein Interface erstellen, dass elementare Methoden als Grundlage setzt und dann für jeden Funktionstyp eine extra Klasse, die von dem Interface erbt.

So kann ich dann alles in der Main-Methode lassen und der Inhalt würde sich stark in Grenzen halten. Auch die Fehlersuche und Wartung würde einfacher fallen, besonders da Visual Studio einen hervorragenden Debugger bietet.


Wie du das machst, kann ich dir nicht sagen, da ich Java nur grundlegend kenne.
Allerdings solltest du schon mit Klassen arbeiten, denn das erleichtert das Arbeiten sehr und sorgt auch für eine viel bessere Übersichtlichkeit.
Pessimisten sind realistisch.
Optimisten sind glücklich.

Programmieren ist einfach, jeder kann es lernen.
Doch gut programmieren, das ist die Kunst.
Zitieren
#18
Um deine Idee weiterzuführen :
- Interface an Funktionsklassen
- Funktionsklassen mit eigenen Methoden für die Formeln

bedeutet mehr Schreibarbeit, aber ich arbeite gerne mit Methoden, da ich sie vielseitig einsetzen kann und ich Methoden trotzdem übersichtlicher finde.

Jetzt kann ich mir schonmal ein Bild vom Programm in meinem Kopf machen ;D
Hinauf, hinauf zum Schloss!
Zitieren
#19
Ja, das meinte ich, habs nur etwas kürzer geschrieben.

Und wenn du nicht gerne mit Methoden schreibst, solltest du dir eine Sprache suchen, die nicht objektorientiert ist oder eine Scriptsprache.^^

Ohne Methoden macht die ganze Sprache gar keinen Sinn.
Außerdem, wenn du das alles mit einer umfangreichen Klassen-Struktur auch richtig machst, kannst du sie sehr leicht erweitern und in anderen Programmen gut weiter verwenden.

Das ist ja der große Vorteil^^

Hier eine Grundstruktur, wie ich das Programm aufbauen würde:

Code:
namespace Formulas
{
    public interface IFormula
    {
        IFormula Parse(string Formula);
        bool TryParse(string Formula, out IFormula FormulaResult);
        double[] CalculateZeroPoints();
        double CalculateX(double Y);
        double CalculateY(double X);
    }

    public class LinearEquation : IFormula
    {
        public const string FormatFormula = "Y=mX+n";
        public double M_Value { get; private set; }
        public double N_Value { get; private set; }

        public virtual IFormula Parse(string Formula)
        {
            // To do
        }

        public virtual bool TryParse(string Formula, out IFormula FormulaResult)
        {
            // To do
        }

        public virtual double[] CalculateZeroPoints()
        {
            // To do
        }

        public virtual double CalculateX(double Y)
        {
            // To do
        }

        public virtual double CalculateY(double X)
        {
            // To do
        }
    }

    public class QuadraticFormula : IFormula
    {
        public const string FormatFormula = "Y=aX²+bX+c";
        public double A_Value { get; private set; }
        public double B_Value { get; private set; }
        public double C_Value { get; private set; }


        public virtual IFormula Parse(string Formula)
        {
            // To do
        }

        public virtual bool TryParse(string Formula, out IFormula FormulaResult)
        {
            // To do
        }

        public virtual double[] CalculateZeroPoints()
        {
            // To do
        }

        public virtual double CalculateX(double Y)
        {
            // To do
        }

        public virtual double CalculateY(double X)
        {
            // To do
        }
    }
}


Das lässt sich beliebig erweitern und würde am Programm, dass die Arbeit dann bietet, nicht im geringsten stören. Man müsste nur noch anbieten, dass der Text auch in die richtige Klasse gegeben wird und das lässt sich dann ja ganz billig mit switch machen.
Das ist der größte Vorteil der objektorientierten Programmierung, denn das Programm kann dann später schön mit den Variablen von Typ IFormula arbeiten, ausgeführt werden dann aber jeweils die passenden Methoden.

Also die Kriterien eines guten Programmes:
- gute Erweiterbarkeit -> Ja
- gute Wartbarkeit -> Ja
- gute Ãœbersichtlichkeit -> Ja
und mehr fallen mir nicht ein^^


Edit:
Ich denke, ich lasse doch das Interface weg und setze stattdessen eine abstrakte Klasse. Dann kann ich auch eine wichtige statische Methode bieten, die dafür sorgen würde, dass überhaupt keine Änderungen im eigentlichen Programm nötig sind.
Werd das schnell fertig machen und den Code dann ändern
Pessimisten sind realistisch.
Optimisten sind glücklich.

Programmieren ist einfach, jeder kann es lernen.
Doch gut programmieren, das ist die Kunst.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste