kostenloser Webspace werbefrei: lima-city


Funktion eingeben

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    ttobsen

    Kostenloser Webspace von ttobsen

    ttobsen hat kostenlosen Webspace.

    hi

    ich habe folgendes problem mit QBASIC. ich m?cht das der benutzer seine rechnung eingibt, z.B, 3 * X

    dann wird programm f?r das X eine 2 gesetzt und ausgerechnet.

    also quelltechnisch so

    eingabe der mathe. funktion
    f?r X in der funktion = 1 setzen
    Ergebnis ausgeben


    gibts da schon ganze befehlss?tze in qbasich, ode rmu? ich nun jedes einzelne zeichen in meinem string auslesen und gegebenfalls mit case anweisungen verkn?pfen?

    danke f?r eure hilfe, gru? Tobi
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hm du willst das f?r x ne zahl reinkommt die der user eingibt
    m?sste dan irgenwie so:
    x= txtvariable.text
    ergebnis = 3*x
    txtergebnis.text=ergebnis

    so zumindest in visual basic weis nicht obs in q basic auch geht variablen deklarieren net vergessen
  4. Autor dieses Themas

    ttobsen

    Kostenloser Webspace von ttobsen

    ttobsen hat kostenlosen Webspace.

    also es ist so

    der user gibt seine funktions gleichung ein. sagen wir mal mal:

    f(x)= 3x^2 +5x +2 (eingabe nat?rlich ohne das f(x)!)

    in BASIC kann ich ja schreiben

    x=1

    y=3 * x^2 + 5 * x + 2

    print y

    AUSGABE: 10


    also rein theoretisch will ich y= f(x) machen. ist nur desalb nicht m?glich weil das was ich eingebe ja nicht compiliert wird! aber es k?nnte ja sein das BASIC irgend ne funktion bietet die das kann. oder hat jemand schonmal sowas ?hnliches geschriben, dann kann er mir seine string auswertung schicken.

    Gru? Tobi
  5. f?r was wilslt du das denn ahben nen programm?`?? wensn nicht also viel arbeit ist prog ich dir das schnell in vb
  6. Autor dieses Themas

    ttobsen

    Kostenloser Webspace von ttobsen

    ttobsen hat kostenlosen Webspace.

    ersten

    ich will das haben weil ich ein programm geschgrieben habe das ne funktion auf dem bildschrin darstellt, dazu ben?tige ich von einer funktion sehr viele werte. so jetzt will ich aber die funktion direkt eingeben im programm und nicht jedesmal im editor.

    zweitens

    so schnell haste das nicht gemacht! du musst schlie?lich an alles m?gliche dneken:

    punkt vor strick
    klammersetzung
    potenzen!
    sin, cos, tan und jeweils den arcus davon
    dann nat?rlich die 4 grundrecchenarten
    exponenzial funktionen
    logarithieren
    ....

    es ist extrem viel aufwend. die einzigste programmier m?glichkeit w?re

    input "gleicuung: "; gleichung$

    und dann mit ner schleife jedes einzelne zeichen in der gleichung auszuwerten um danach die rechnung auzustellen!


    Gru? Tobi
  7. d*f

    Das, was Du Dir vorgenommen hast w?rde ich schon zu den anspruchsvolleren Programmierprojekten z?hlen!

    Ich hab ein Programm zur Therm- (bzw. Funktions)auswertung vor l?ngerer Zeit geschrieben und bestimmt 10 Stunden gebraucht (allerdings ohne jegliche Hilfe).
    Das Programm und ein Teil des Quelltextes (, der Dir weiter helfen sollte,) kannst Du unter http://home.arcor.de/drfiasko/Programmierprojekte.html downloaden!

    Grunds?tzlich: Du solltest das Problem auf JEDEN FALL rekursiv angehen. Alles andere wird nie etwas.
  8. Autor dieses Themas

    ttobsen

    Kostenloser Webspace von ttobsen

    ttobsen hat kostenlosen Webspace.

    genau sowas hab ich gesucht!

    also ist die einzigste m?glichkeit die ich habe das ich den therm auswerte

    =(

    naja gute programme erfodern nummal ihren flei?

    danke sch?n

    falls jemand noch ne starke idee, bzw. algorithmus entwickelt hat bitte auch hier rein posten!

    Danke

    Gru? Tobi
  9. 0******a

    Man, man... ich weiss, warum es keine guten Nachwuchsprogrammier mehr gibt... ihr seid einfach zu phantasielos geworden... ;-)
    Ich h?tte da noch eine andere Idee, wie das Problem zu l?sen ist:
    Mit OPEN eine Datei ?ffnen, den zu berechnenden String in ein kurzes Programm schreiben und danach die Datei (nach Abspeichern) mit SHELL per Aufruf mit "qbasic /run calc.bas > ergebnis.dat" ausf?hren. Das kurze Programm, das man in calc.bas geschrieben hat, sollte einfach nur das Endergebnis ausgeben. Danach ergebnis.dat auslesen und man hat das Ergebnis der Berechnung. Sollte nicht l?nger als eine Stunde dauern, das zu programmieren.

    Viel Spass dabei.
  10. d*f

    Origineller Vorschlag, aber wie verhinderst du mathematische Inkorrektheiten wie Division durch 0, sorgst daf?r das zu gro?e Zahlen keinen ?berlauf verursachen und das der Benutzer keinen Bl?dsinn (Buchstaben) eingibt und damit Syntaxfehler erzeugt.
    Au?erdem ist es schade um die viele Rechenzeit, die mit sinnlosen Abspeichern und Auslesen vertan wird, wenn eine Variable wie von ttobsen gewollt verschiedene Werte annimmt (f?r einen Funktionsgraphen braucht man mindestens 1000 berechnete Stellen).
    Also keine ernsthafte elegante L?sung, sondern wirklich nur ein Scherzprogramm.
  11. Autor dieses Themas

    ttobsen

    Kostenloser Webspace von ttobsen

    ttobsen hat kostenlosen Webspace.

    die idee von o-checka ist echt genial. doch der einwand korrekt. ich lasse pro funktion 1000 werte rechnen. ich werde es eifnach mal versuchen mit deiner idee ob es von der zugriffszeit hinpasst. wenn das dann erstmal ne minute braucht um den graphen anzuzeigen w?re shocn sehr nevig. bin da echt mal gespannt.

    Gru? Tobi
  12. 0******a


    drf schrieb:
    Origineller Vorschlag, aber wie verhinderst du mathematische Inkorrektheiten wie Division durch 0, sorgst daf?r das zu gro?e Zahlen keinen ?berlauf verursachen und das der Benutzer keinen Bl?dsinn (Buchstaben) eingibt und damit Syntaxfehler erzeugt.

    Wenn es um eine Programmiersprache gehen w?rde, die mit einem Compiler arbeitet, w?ren deine Einw?nde berechtigt. Aber da es sich um QBASIC, also eine Interpretersprache handelt, macht das nichts aus. Der Interpreter amcht n?mlich genau das Gleiche, was man bei eigenen Fehlermeldungen auch machen w?rde, n?mlich auf den Fehler hinweisen.




    drf schrieb:
    Au?erdem ist es schade um die viele Rechenzeit, die mit sinnlosen Abspeichern und Auslesen vertan wird, wenn eine Variable wie von ttobsen gewollt verschiedene Werte annimmt

    Ich denke nicht, das das einen grossen zeitlichen Unterschied macht, bei der heutigen Festplattenzugriffsgeschwindigkeit. Und wenn die Zeit so ein wichtiger Faktor sein sollte, dann w?rde ich das eh nicht in einer Interpretersprache machen. Da ich weiss, das ttobsen auch mit Pascal und Delphi arbeitet, gehe ich mal davon aus, das absolute Geschwindigkeitsoptimierung f?r ihn nicht das Wichtigste in diesem Fall sein kann. Sonst h?tte er es halt nicht in QBASIC gemacht.




    drf schrieb:
    Also keine ernsthafte elegante L?sung, sondern wirklich nur ein Scherzprogramm.

    Na ja... elegant bestimmt nicht, ernsthaft ja, weil es ja hier nur um das Ergebnis geht. Verkaufen w?rde ich das aber so auch nicht ;-)
  13. d*f

    Ist schon okay, 0-checka, Du hast ja recht: Wenn es wirklich nur um das Ergebnis geht, ist deine Variante wahrscheinlich die beste.
  14. mistermonopoly

    mistermonopoly hat kostenlosen Webspace.

    F?r sowas kann man sich eigentlich recht schnell einen Parser programmieren, so unglaublich schwer ist das nicht wenn man mal weis wie das geht. Dank Rekursion (*anhimmel*) ist auch Punkt-Vor-Strich Rechnung rein gar kein Problem... Gehen wir mal davon aus:
    Der Term ist als String vorhanden, mit Zahlen, der Variable x, Operatoren und Funktionen. Als allererstes w?rde ich den String nach 'x' untersuchen und diese Stelle dementsprechend durch die gew?nschte Zahl ersetzen. Jetzt geht das eigentliche Funktionsparsing los. Mein Parser funktioniert nach dem Prinzip, das die Funktion immer zuerst nach Strichrechnungsoperatoren sucht, und zwar den ersten vorkommenden. Ob zuerst + oder - ist egal. Nehmen wir mal an es wurde + gefunden. Dann ruft sich die Funktion 2 mal nacheinander selbst auf - Als erstes mit dem ersten Teil des Strings vor dem + , als zweites mit dem Teil des Strings nach dem +. Der R?ckgabewert ist meinetwegen eine reele Zahl. Beide Ergebnisse werden addiert. Du musst in der Funktion immer nur die einzelnen Operatoren oder math. Funktionen nacheinander ?ber pos (f?r Delphi, ein VB ?quivalent kenne ich nicht) suchen. Wenn am Ende nur noch die Zahl im String vorhanden ist wird diese zur?ckgegeben. Durch die Reihenfolge, in der du die Operatoren abfragst, wird auch gleich Punkt vor Strich ber?cksichtigt - Ein genial einfaches Prinzip. Verdammt, ich hab total wirr geschrieben ^^ Ich geb' mir sp?ter nochmal was mehr M?he und formulier das ordentlich, denn das lohnt sich echt, der Parser braucht kaum Code und ist extrem einfach zu erweitern...
  15. Autor dieses Themas

    ttobsen

    Kostenloser Webspace von ttobsen

    ttobsen hat kostenlosen Webspace.

    hat aber den mega nachteil das man einfach zuviel ber?cksichtigen mu?! es gibt in der mathematik so viele m?glichkeiten und die kann man bei weitem nicht so einfach l?sen! bis jetzt bleib ich bei o-checkas idee, weil die einfachheit einfach alles ?beragt. falls fehler auftretten kann ich die mit onerror abfangen und fertig. deine idee mit dem parser wend ich dann an wenn ich das programm auf delphi ?bertragen will!

    Gru? Tobi
  16. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!