Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Frage zu der graphischen Darstellung von Funktionen
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Christoph



Anmeldungsdatum: 07.04.2006
Beiträge: 108
Wohnort: NRW, Rietberg

BeitragVerfasst am: 18.08.2007, 20:39    Titel: Frage zu der graphischen Darstellung von Funktionen Antworten mit Zitat

Hallo,

ich habe ein paar Fragen zu diesem Code hier:
http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=65

Es geht um die graphische Darstellung von Funktionen.
Ich habe einfach mal versucht in dem enthaltenden Beispielprogramm die Funktinen zu verändern, doch sobald ich da etwas verändere meckert der Compiler:

Hier mal e Auszug aus dem Beispielprogramm, in dem ich eine Funktion verändert hab:

Code:
 '----------------------- Beispielprogramm: ----------------------

Dim As Single x(100), y1(100), y2(100), y3(100), y4(100), y5(100), dx=7/100
Dim As Integer i

'Berechnung der Funktionen y1 = 2^x, y2 = ^3^x, y3 = 4^x (ablegen als Arrays):
For i=-2 To 100
  x(i)=i*dx-2
  y1(i)=x^2(i) 'Verändert; vorher 2^x
  y2(i)=3^x(i)
  y3(i)=4^x(i)
  y4(i)=Sin(i*dx)*10+50 'ergänzt
  y5(i)=Cos(i*dx)*10+50 'ergänzt
Next i


Der Compiler sagt mir:
Zitat:
Command executed:
"C:\Programme\FreeBASIC\fbc.exe" "D:\Christoph\FREEBASIC\Funktionen graphisch darstellen.bas"

Compiler output:
D:/Christoph/FREEBASIC/Funktionen graphisch darstellen.bas(19) error 68: Array access, index expected, before '^' in 'y1(i)=x^2(i) 'Verändert; vorher 2^x'

Results:
Compilation failed

System:
FBIde: 0.4.6
fbc: FreeBASIC Compiler - Version 0.17 (05-11-2007) for win32 (target:win32)
OS: Windows XP (build 2600, Service Pack 2)


Wieso will der das nicht? Was mache ich falsch?

Gruß
Christoph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 18.08.2007, 20:43    Titel: Antworten mit Zitat

Du hast eine For/Next Schleife
Code:

FOR i=-2 TO 100


mit dem Startwert "-2"

Aber nur ein Array das von 0 bis 100 declariert ist

solltst entweder den Startwert in der For/Next anpassen oder sas Array
zb.
Code:

Dim x(-2 to 100) as Integer

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 18.08.2007, 20:53    Titel: Antworten mit Zitat

Hallo,

zum einen solltest du, wie Eternal_Pain bereits geschrieben hat, die Arrays anpassen:
Code:
Dim As Single x(-2 to 100), y1(-2 to 100), ...

Zum anderen muss das (i) hinter die Variable x:
Code:
  y1(i)=x(i)^2 'Verändert; vorher 2^x

Viele Grüße!
Sebastian
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christoph



Anmeldungsdatum: 07.04.2006
Beiträge: 108
Wohnort: NRW, Rietberg

BeitragVerfasst am: 18.08.2007, 21:06    Titel: Antworten mit Zitat

Achso, das (i) muss immer hinter das X !
Und das mit dem Array, ohja, gar nicht gesehen...

Ja jetzt läuft es!

so, als nächstes muss ich mal probieren, ob ich das in meinem Funktionsrechner einbauen kann....

Gruß
Christoph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Christoph



Anmeldungsdatum: 07.04.2006
Beiträge: 108
Wohnort: NRW, Rietberg

BeitragVerfasst am: 18.08.2007, 21:51    Titel: Antworten mit Zitat

So, also ich habe den Code etwas verändert und angepasst, nur das was noch nicht klappt ist, das ich die Funktion, die ich einlese anzeigen lassen kann...

So, mein Problem liegt darin, wie kann ich die eingelesen Funktion(Variable f) jetzt grafisch darstellen, probiere ich es dem Array (y1) f zuzuweisen gibt es nen Error:
Code:
  y1(i)= f


Zitat:
Funktionen graphisch darstellen.bas(32) error 159: Invalid assignment/conversion in 'y1(i)= f'


Wie bekomme ich das jetzt hin, dass er mir das anzeigt?

Den Code habe ich schon etwas modifiziert.
Ich brauche ja nur 1 Funktion darstellen.


Code:
#INCLUDE "fbeval.bas"  'Eval Zubehör
#INCLUDE "stdeval.bas"

'Sin und Cos ergänzt u. etwas mehr :-)) :D happy
'Die Funktionsdarstellung von Sin u. Cos muß noch verbessert werden..
'möglich, daß es schneller geworden ist..
Declare Sub Koordinaten (xMin As Single, yMin As Single, xMax As Single, _
                         yMax As Single, nx As Integer, ny As Integer, _
                         xAchse As String, yAchse As String, Text As String)
Declare Sub ZeichneKurve (x() As Single, y() As Single, n As Integer, _
                          Farbe As Integer)

Const Schwarz=0, Blau=1, Gruen=2, Rot=4, Lila=5, hell=8, Gelb=14
' ----------------------- Beispielprogramm: ----------------------
dim as integer we,wa
dim f As String
Dim Result As Eval.Result

Input "Funktion";f 'Funktion: z.B x^4+6*x
input "WA";we 'Wertebereich Anfang
input "WE";we 'Wertebereich Ende

Dim As Single x(wa to we), y1(wa to we)', brauch nur eine ' y2(wa to we)  , y3(wa to we), y4(wa to we), y5(wa to we),
'dim as single dx=7/100 'ka, war da schon drin^^

Dim As Integer i
'Berechnung der Funktionen y1 = 2^x, y2 = ^3^x, y3 = 4^x (ablegen als Arrays):
For i=wa To we
    'Eval Variable setzen und verarbeiten
    Eval.SetVariable("x", i) 
     Result = Eval.Execute(f)
    y1(i)= f

   
   
    ? "fuer: x= " & i & Chr(10) & f & "=" &Result.Value
    Print "_____________" 'Sieht übersichtlicher aus
    Print "_____________"
Next i





'For i=wa To we 'Alter Block

  'x(i)=i*dx-2
 'y1(i)= 2^x 'Verändert; vorher 2^x
  'y2(i)=10^x(i)+10*x(i)+120
  'y3(i)=4^x(i)
  'y4(i)=Sin(i*dx)*10+50 'ergänzt
  'y5(i)=Cos(i*dx)*10+50 'ergänzt
'Next i

'Graphikfenster öffnen und Koordinatensystem mit Beschriftungen zeichnen:
Screen 12
Color 0, 15
Cls
Koordinaten(-2, 0, 5, 100, 7, 10, "x", "y", _
            "y=x^2: rot   y=3^x: blau  y=4^x: gruen  y=sin x: gelb  y=cos x: lila")

'Funktionskurven ins Koordinatensystem zeichnen:
ZeichneKurve (x(), y1(), 100, hell+Rot)
'ZeichneKurve (x(), y2(), 100, Blau)
'ZeichneKurve (x(), y3(), 100, Gruen)
'ZeichneKurve (x(), y4(), 100, Gelb)
'ZeichneKurve (x(), y5(), 100, Lila)
GetKey

'---------------------- Beispielprogramm Ende ------------------                         
                         
Sub PrintIt(byVal Zeile As Integer, byVal Spalte As Integer, byRef Was As String)
  Locate Zeile, Spalte
  ?Was
End Sub
                         
Sub Koordinaten(xMin As Single, yMin As Single, xMax As Single, yMax As Single,_
                nx As Integer, ny As Integer, xAchse As String, yAchse As String, Text As String)
' Koordinatenfeld mit linearen Achsenteilungen.
' Parameter:
' - xMin ... yMax definieren die Abmessungen des Darstellungsfeldes.
' - nx, ny = Zahl der Achsenabschnitte auf der x- bzw. y-Achse
' - xAchse, yAchse = Beschriftung fuer x-Achse bzw. y-Achse
' - Text = Bildunterschrift.
' Der Graphikbildschirm muß vorher mit SCREEN 12 geöffnet sein!

  Dim As Integer AnfZeile=2, AnfSpalte=15, EndZeile=22, EndSpalte=75, i, TextBeginn
  Dim As Single ax=0.995*(xMax-xMin)/nx, ay=0.995*(yMax-yMin)/ny, x, y

  View (AnfSpalte*8-4, AnfZeile*16-8)-(EndSpalte*8-4, EndZeile*16-8)      'Sichtfenster fuer Koordinatensystem
  Window (xMin, yMin)-(xMax, yMax)  'mit Eckpunkten (xmin, ymin), (xmax, ymax)
   
  For i=0 To nx 'Teilung horizontale Achse:
    x=xMin+i*ax
    Line (x, yMin)-(x, yMax)
  Next i
 
  For i=0 To ny 'Teilung vertikale Achse:
    y=yMin+i*ay
    Line (xMin, y)-(xMax, y)
  Next i

  'Beschriftung:
  PrintIt(AnfZeile, AnfSpalte-Len(Str(yMax))-1, Str(yMax))
  PrintIt(EndZeile, AnfSpalte-Len(Str(yMin))-1, Str(yMin))
  PrintIt(EndZeile+1, AnfSpalte-.5*Len(Str(xMin)), Str(xMin))
  PrintIt(EndZeile+1, EndSpalte-.5*Len(Str(xMax)), Str(xMax))
  PrintIt((AnfZeile+EndZeile)/2, AnfSpalte-Len(yAchse)-1, yAchse)
  PrintIt(EndZeile+1, (AnfSpalte+EndSpalte)/2-.5*Len(xAchse), xAchse)
  PrintIt(EndZeile+3, (AnfSpalte+EndSpalte-Len(Text))/2, Text)
End Sub

Sub ZeichneKurve (x() As Single, y() As Single, n As Integer, Farbe As Integer)
' Kurve durch die Punkte x(0), y(0) bis x(n), y(n) in der angegebenen Farbe,
' z.B. in das mit der Sub Koordinaten gezeichnete Koordinatensystem.
  For i As Integer=1 To n
    Line (x(i-1), y(i-1))-(x(i), y(i)), Farbe
  Next i
End Sub

sleep
'SEE Dateien Download:
'Die Dateien sind die, die der Rechner benötigt:
'fbeval.bas
'stdeval.bas

'Die Dateien könnt ihr euch hier runterladen: (für 0.17 tauglich gemacht)
' http://jeak.de/Subpages/siedlerchr/downloads/see_ohne_call.zip


So, wie bekomme ich das hin, dass der mir die Funktion die ich eingebe anzeigt?

Gruß
Christoph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 18.08.2007, 22:00    Titel: Antworten mit Zitat

(@Sebastian:
Ist da ein Fehler im Highlighting-Script oder in phpBB? Der Smiley in der Codebox.)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 18.08.2007, 22:05    Titel: Antworten mit Zitat

Mao hat Folgendes geschrieben:
(@Sebastian:
Ist da ein Fehler im Highlighting-Script oder in phpBB? Der Smiley in der Codebox.)
Das ist ein Fehler vom phpBB - das war schon immer so...
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 18.08.2007, 22:41    Titel: Antworten mit Zitat

Christoph hat Folgendes geschrieben:
..
'Berechnung der Funktionen y1 = 2^x, y2 = ^3^x, y3 = 4^x (ablegen als Arrays):
For i=wa To we
'Eval Variable setzen und verarbeiten
Eval.SetVariable("x", i)
Result = Eval.Execute(f)
y1(i)= f



? "fuer: x= " & i & Chr(10) & f & "=" &Result.Value
Print "_____________" 'Sieht übersichtlicher aus
Print "_____________"
Next i





'For i=wa To we 'Alter Block

'x(i)=i*dx-2
'y1(i)= 2^x 'Verändert; vorher 2^x
'y2(i)=10^x(i)+10*x(i)+120
'y3(i)=4^x(i)
'y4(i)=Sin(i*dx)*10+50 'ergänzt
'y5(i)=Cos(i*dx)*10+50 'ergänzt
'Next i
..
Wenn der Original-Code nicht funktioniert hätte, wäre ich nicht daran gegegangen, Änderungen einzubauen. Ich finde es natürlich prima, daß du meine Version benutzt, dann brauche ich nur noch deinen Teil zu überprüfen lachen
Gut, jetzt aber ernsthaft:
Imho solltest du erstmal probieren, die bereits eingebauten Funktionen(also die vor Sin() und Cos() ) mal mit See zu programmieren.
Wenn du damit sicher bist, dann vllt Sin() und Cos() probieren, denn wie ich schon gesagt habe. läßt die Grafik zu wünschen übrig. Da liegt aber der 'Fehler' dann eindeutig bei mir, weil ich mir das dann wohl doch nicht genau genug angesehen habe verlegen Dramm schwüber..
Wenn du das alles KANNST, ist es an der Zeit, eigene Funktionen zu probieren..
..und wenn die klappen, dann kannste auch mal fremde Funktionen ausprobieren..
btw: y1(i)=f kann ja wohl nur ein Versuch sein..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christoph



Anmeldungsdatum: 07.04.2006
Beiträge: 108
Wohnort: NRW, Rietberg

BeitragVerfasst am: 18.08.2007, 23:22    Titel: Antworten mit Zitat

@ytwinky

Also, der Code von dir, der funktioniert ja auch soweit, ich konnte da ja beliebige Funktionen eingeben....

Zitat:
...Imho solltest du erstmal probieren, die bereits eingebauten Funktionen(also die vor Sin() und Cos() ) mal mit See zu programmieren.
Wenn du damit sicher bist, dann vllt Sin() und Cos() probieren, denn wie ich schon gesagt habe. läßt die Grafik zu wünschen übrig. Da liegt aber der 'Fehler' dann eindeutig bei mir, weil ich mir das dann wohl doch nicht genau genug angesehen habe Dramm schwüber..
Wenn du das alles KANNST, ist es an der Zeit, eigene Funktionen zu probieren..
..und wenn die klappen, dann kannste auch mal fremde Funktionen ausprobieren..
btw: y1(i)=f kann ja wohl nur ein Versuch sein..
Gruß
ytwinky


Ich habe den Code ja nur soweit verändert, dass ich den Wertebereich eingeben kann und das mir nur 1 Funktion angezeigt wird, die andern brauch ich ja nicht....Der einfachheit halber...

Das einzige was ja jetzt fehlt, ist das SEE mit der graphischen Darstellung zusammenarbeitet...
-Ich kann ja eine Funtkion einlesen und auch verarbeiten, code vom Funktionsrechner...
-Das einzige was ja noch fehlt ist, das es iwie doch möglich ist, dass ich die Funktion, die ich eingebe, dem Grafik zeichner übergebe...



Zitat:
Imho solltest du erstmal probieren, die bereits eingebauten Funktionen(also die vor Sin() und Cos() ) mal mit See zu programmieren.
Wenn du damit sicher bist, dann vllt Sin() und Cos() probieren, ...


Wie genau meinst du das?
Ich habe schon allerlei mit See ausprobiert, nehme immer ganz gerne die console.bas zum testen (von see)..
Komischweise unterstützt SEE nur:

Code:
Eval.SetFunction(  "abs",       @StandardSEEFunctions)
Eval.SetFunction(  "acos",      @StandardSEEFunctions)
Eval.SetFunction(  "asin",      @StandardSEEFunctions)
Eval.SetFunction(  "atan2",     @StandardSEEFunctions)
Eval.SetFunction(  "atan",      @StandardSEEFunctions)
Eval.SetFunction(  "atn",       @StandardSEEFunctions)
Eval.SetFunction(  "exp",       @StandardSEEFunctions)
Eval.SetFunction(  "fix",       @StandardSEEFunctions)
Eval.SetFunction(  "int",       @StandardSEEFunctions)
Eval.SetFunction(  "ln",        @StandardSEEFunctions)
Eval.SetFunction(  "log",       @StandardSEEFunctions)
Eval.SetFunction(  "mod",       @StandardSEEFunctions)
Eval.SetFunction(  "rnd",       @StandardSEEFunctions)
Eval.SetFunction(  "sgn",       @StandardSEEFunctions)
Eval.SetFunction(  "sin",       @StandardSEEFunctions)
Eval.SetFunction(  "sqr",       @StandardSEEFunctions)
Eval.SetFunction(  "radians",   @StandardSEEFunctions) ' converts degrees to radians
Eval.SetFunction(  "degrees",   @StandardSEEFunctions) ' converts radians to degrees
Eval.SetFunction(  "avg",       @StandardSEEFunctions) ' returns average value of passed arguments
Eval.SetFunction(  "min",       @StandardSEEFunctions) ' returns smallest value from argument list
Eval.SetFunction(  "max",       @StandardSEEFunctions) ' returns biggest value from argument list


Hat der Autor da den Cos vergessen oder habe ich den nicht entdeckt?

Gruß
Christoph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 18.08.2007, 23:37    Titel: Antworten mit Zitat

Tja, ich sehe den auch nicht in der Liste..
Aaaaaber du kannst ja den Cosinus durch den Sinus ersetzen:
Aus dem Dreieck im Einheitskreis folgt:
Sin^2(Alpha)+Cos^2(Alpha)=1 ;Pythagoras
-->Cos(Alpha)=Sqr(1-Sin^2(Alpha)) ; für Sin^2(Alpha)<=1
Das ist zwar umständlich, aber so ginge es mit SEE.
Falls du eine Formel für den Tangens brauchst:
Tan(Alpha)=Sin(Alpha)/Cos(Alpha) ;für Cos(Alpha)<>0
Aber das steht ja auch auf dem Bild..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 19.08.2007, 11:00    Titel: Antworten mit Zitat

hmm, habe ich eine neuere Version??
Code:
Eval.SetFunction(  "abs",       @StandardSEEFunctions)
Eval.SetFunction(  "acos",      @StandardSEEFunctions)
Eval.SetFunction(  "asin",      @StandardSEEFunctions)
Eval.SetFunction(  "atan2",     @StandardSEEFunctions)
Eval.SetFunction(  "atan",      @StandardSEEFunctions)
Eval.SetFunction(  "atn",       @StandardSEEFunctions)
Eval.SetFunction(  "cos",       @StandardSEEFunctions)
Eval.SetFunction(  "exp",       @StandardSEEFunctions)
Eval.SetFunction(  "fix",       @StandardSEEFunctions)
Eval.SetFunction(  "int",       @StandardSEEFunctions)
Eval.SetFunction(  "ln",        @StandardSEEFunctions)
Eval.SetFunction(  "log",       @StandardSEEFunctions)
Eval.SetFunction(  "mod",       @StandardSEEFunctions)
Eval.SetFunction(  "rnd",       @StandardSEEFunctions)
Eval.SetFunction(  "sgn",       @StandardSEEFunctions)
Eval.SetFunction(  "sin",       @StandardSEEFunctions)
Eval.SetFunction(  "sqr",       @StandardSEEFunctions)
Eval.SetFunction(  "tan",       @StandardSEEFunctions)
Eval.SetFunction(  "hibyte",    @StandardSEEFunctions)
Eval.SetFunction(  "lobyte",    @StandardSEEFunctions)
Eval.SetFunction(  "hiword",    @StandardSEEFunctions)
Eval.SetFunction(  "loword",    @StandardSEEFunctions)
Eval.SetFunction(  "radians",   @StandardSEEFunctions) ' converts degrees to radians
Eval.SetFunction(  "degrees",   @StandardSEEFunctions) ' converts radians to degrees
Eval.SetFunction(  "avg",       @StandardSEEFunctions) ' returns average value of passed arguments
Eval.SetFunction(  "min",       @StandardSEEFunctions) ' returns smallest value from argument list
Eval.SetFunction(  "max",       @StandardSEEFunctions) ' returns biggest value from argument list
(stdeval.bas 15.09.2006)
EDIT/
Da ist ein Bug in der Darstellung: target="_blank"> ??
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 19.08.2007, 11:46    Titel: Antworten mit Zitat

Hi,
warum hab ich bloß nicht gleich erstmal den Foren-Suchdienst befragt? vor lachen auf dem Boden rollen
Anyway..
Schönen Dank, volta zwinkern
@Christoph:
Schau mal in StdEval oder wo die Funktionen sind..
..ja, ein Stück über der Liste, die du gepostet hast..
..da könnte ein 'Cos' stehen Ja!
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 19.08.2007, 12:28    Titel: Antworten mit Zitat

volta hat Folgendes geschrieben:
EDIT/
Da ist ein Bug in der Darstellung: target="_blank"> ??

Bugfix ist unterwegs. zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christoph



Anmeldungsdatum: 07.04.2006
Beiträge: 108
Wohnort: NRW, Rietberg

BeitragVerfasst am: 19.08.2007, 14:28    Titel: Antworten mit Zitat

Also, hier steht nen Cos, aber ich kann den nicht benutzen, habe das mal mit der console.bas probiert, sin(90) geht einwandfrei, aber cos kennt er nicht...

Hier sind die Sachen die über den andern stehen:
Code:
' "constants"
Eval.SetVariable("pi", 3.1415926535897932)
Eval.SetVariable("e", 2.71828182845905)

' functions:
Function StandardSEEFunctions(argc As Integer, argv() As Double) As Double

    Dim i As Integer
    Dim Result As Double

    Select Case Eval.CurrentFunction ' always uppercase

        Case "ABS"
            If argc > 0 Then Result = Abs(argv(0))

        Case "ACOS"
            If argc > 0 Then Result = ACos(argv(0))

        Case "ASIN"
            If argc > 0 Then Result = ASin(argv(0))

        Case "ATAN2"
            If argc > 1 Then Result = ATan2(argv(0), argv(1))

        Case "ATN", "ATAN"
            If argc > 0 Then Result = ATn(argv(0))

        Case "COS"
            If argc > 0 Then Result = Cos(argv(0))

        Case "EXP"
            If argc > 0 Then Result = Exp(argv(0))

        Case "FIX"
            If argc > 0 Then Result = Fix(argv(0))

        Case "INT"
            If argc > 0 Then Result = Int(argv(0))

        Case "LN"
            If argc > 0 Then Result = Log(argv(0))

        Case "LOG"
            If argc = 1 Then ' natural logarithm
                Result = Log(argv(0))
            ElseIf argc > 1 Then ' log of any base
                Result = Log(argv(0)) / Log(argv(1))
            End If

        Case "MOD"
            If argc > 1 Then
                Result = argv(0)
                For i = 1 to argc - 1
                    Result = Result Mod argv(i)
                Next
            End If

        Case "RND"
            If argc > 0 Then
                Result = Rnd(argv(0))
            Else
                Result = Rnd()
            End If

        Case "SGN"
            If argc > 0 Then Result = Sgn(argv(0))

        Case "SIN"
            If argc > 0 Then Result = Sin(argv(0))

        Case "SQR"
            If argc > 0 Then Result = Sqr(argv(0))

        Case "TAN"
            If argc > 0 Then Result = Tan(argv(0))

        Case "RADIANS"
            If argc > 0 Then Result = argv(0) * 3.1415926535897932 / 180

        Case "DEGREES"
            If argc > 0 Then Result = argv(0) * 180 / 3.1415926535897932

        Case "AVG"
            If argc > 0 Then
                For i = 0 To argc - 1
                    Result += argv(i)
                Next
            End If

        Case "MIN"
            If argc > 0 Then
                Result = argv(0)
                For i = 1 To argc - 1
                    If argv(i) < Result Then Result = argv(i)
                Next
            End If

        Case "MAX"
            If argc > 0 Then
                Result = argv(0)
                For i = 1 To argc - 1
                    If argv(i) > Result Then Result = argv(i)
                Next
            End If


    End Select

    Return Result

End Function


Nur, warum taucht er da auf, aber nicht in dem andern Teil...
Bin da etwas verwundert ....

Meine See Version ist:
Zitat:
Simple Expression Evaluator

v1.0 (Tuesday, September 12, 2006)


Das war der letzte Link in dem Thema...


Gruß
Christoph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 19.08.2007, 14:49    Titel: Antworten mit Zitat

So, in dieser see.rar sind jetzt beide Versionen drin:
-Ohne Call
-diese ekligen $ entfernt
-die doofe Konstante für Pi durch 4*Atn(1) ersetzt
-die doofe Konstante für e durch Exp(1) ersetzt
(längere Konstanten bringen keine höhere Genauigkeit..)

Ähm, Sin(90) geht einwandfrei? Was soll 90 sein? Mußt du das nicht ins Bogenmaß umrechnen? Hier sind die Grundlagen dazu..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 19.08.2007, 16:09    Titel: Antworten mit Zitat

ytwinky hat Folgendes geschrieben:
Ähm, Sin(90) geht einwandfrei? Was soll 90 sein?

90 ist ungefähr 28,648*PI, nicht wahr? grinsen
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christoph



Anmeldungsdatum: 07.04.2006
Beiträge: 108
Wohnort: NRW, Rietberg

BeitragVerfasst am: 19.08.2007, 16:35    Titel: Antworten mit Zitat

sin 90 gibt 1, wenn ich das mit see rechne, kommt der auch auf das Ergebnis! Brauch ich nix umwandeln...

Siehe Screenshot:


Nur den Cos, will er nicht, bekomme immer nen Error...
Ich nehme dafür die console.bas, weil er mir den Error dann anzeigt:

Screenshot des Errors:



Da steht es weiß auf schwarz!happy

Vielleicht liegt es daran, dass der Cos schon in FreeBasic enthalten ist?
Das wäre doch unsinnig, weil Sin gibt es doch auch als Standard Funktion...

Gruß
Christoph
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 19.08.2007, 17:15    Titel: Antworten mit Zitat

Dein erster Screenshot sieht mehr nach sin(90)=0.8939966636005579 aus als nach sin(90)=1 ...
Aber das mit dem cos ist seltsam.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 19.08.2007, 17:17    Titel: Antworten mit Zitat

Christoph hat Folgendes geschrieben:
sin 90 gibt 1, wenn ich das mit see rechne, kommt der auch auf das Ergebnis! Brauch ich nix umwandeln...


1 mag für den Laien zwar *ungefähr* 0.8939966636005579 sein, aber selbst bei einer CPU mit FDIV-bug wäre das noch eine sehr große heftige abweichung durchgeknallt Sprich: dass das so "nah" an 1 dran ist, ist reiner zufall...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 19.08.2007, 17:23    Titel: Antworten mit Zitat

Kann man alles gegen Endlich abschätzen ...

Ich bekomme ständig einen Segmentation fault. Wenn ich in der console.bas das stdeval durch ein fbeval ersetze, läuft es zwar, kennt aber weder sin noch cos. verwundert
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz