Kommazahlen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
kswb73
Beiträge: 319
Registriert: 04.02.2008 16:51
Kontaktdaten:

Beitrag von kswb73 »

Code: Alles auswählen

X=5
Debug Pow(2+2*X,2)
Wichtig zu beachten ist, das man nicht 2X sondern 2*X schreibt, da PureBasic sonst Probleme kriegt. Besonder bei Sachen wie XYZ, was X*Y*Z heißen soll, kriegt man Problemen. Hier sieht PureBasic XYZ als eine Variable an. (Ist aber auch besser so, sonst könnte man nur 26 Variablen nutzen).
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

X360 Andy hat geschrieben:Kann ich sowas in PB rechnen ?
Bsp.

(2+2X)²

Ohne dafür ein extra Prog. zu schreiben.
Weil mein Taschenrechner kann es nicht (<- Bsp)
"rechnen" kann man sowas nur, wenn man einen Wert für X hat, und dann kann es auch dein Taschenrechner.
bsp: X sei 8 dann tippst du
8 [*] 2 [=] [+] 2 [=] [²][/b]
und bekommst dann die korrekte 324 angezeigt.

wenn du den wert für X nicht hast, dann kannst du auch nix "rechnen",
dann kannst du höchstens eine Funktions-Kurve zeichnen,
und dafür kann man ganz fix kleine Progrämmchens schreiben:

Code: Alles auswählen

; ***
; ***  Kurve zeichnen
; ***
; ***  Beispiel von Kaeru Gaman
; ***  Dez. 2008
; ***
; ***  PB Ver. 4.20
; ***

EnableExplicit

; *** Größe des Screens
#ScrnW = 1280
#ScrnH = 1024

; *** Position der Origo
#XNull = 640
#YNull = 512

; *** Faktor: Pixel pro Einheit
#XFact = 20
#YFact = 20

Define ScreenX.l, ScreenY.l
Define X.d, Y.d

Define n.l

InitSprite()
InitKeyboard()

OpenScreen( #ScrnW, #ScrnH, 32, "Kurve" )

ClearScreen( $000000 )

StartDrawing( ScreenOutput() )
DrawingMode( #PB_2DDrawing_Outlined )

; *** Koordinatensystem einzeichnen
; ***
  Line( #XNull, 0, 0, #ScrnH, $808080 )
  Line( 0, #YNull, #ScrnW, 0, $808080 )
  Circle( #XNull, #YNull, 5, $808080 )
  For n=0 To #ScrnW Step #XFact
    Line( #XNull + n, #YNull - 2, 0, 5, $808080 )
    Line( #XNull - n, #YNull - 2, 0, 5, $808080 )
  Next
  For n=0 To #ScrnH Step #YFact
    Line( #XNull - 2, #YNull + n, 5, 0, $808080 )
    Line( #XNull - 2, #YNull - n, 5, 0, $808080 )
  Next

  For ScreenX = 0 To #ScrnW -1

; *** Koordinaten-Umrechnung Screen -> Zeichnung
    X = ( ScreenX - #XNull ) / #XFact
  
; ***
; *** hier die Funktion einsetzen,
; *** genauso wie sie im Mathe-Unterricht hingeschrieben wird.
; *** beachten, dass manche Fubktionen eben anders geschrieben werden,
; *** wie in diesem Falle "mal" und "hoch zwei"
; ***

      Y = Pow( 2 + 2 * X , 2 )

; ***
; ***
; ***

; *** Koordinaten-Umrechnung Zeichnung -> Screen
    ScreenY = ( -1 * Y * #YFact ) + #YNull

; *** checken und zeichnen
    If ScreenY >= 0 And ScreenY < #ScrnH
      Plot( ScreenX, ScreenY, $80FFFF )
    EndIf
  
  Next

StopDrawing()
FlipBuffers()

Repeat
  ExamineKeyboard()
Until KeyboardPushed( #PB_Key_Escape ) 

End
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

@Kaeru Gaman

(2+2X)² = (2+2X)(2+2X)

wäre
4 + 4X² +4x +4x = 4 +4X² + 8X

Wenn ich mich auf die Schnelle jetzt nicht ver"rechnet" habe ?

Ist dies kein (indirektes) Rechnen ?



So hab ich es bis jetzt gerlent zu rechnen ( 11te Klasse )

Und für sowas bräuchte ich ein Code / Prog. für meine Taschenrechner der mir das Ausrechnet .... ( Mein Taschenrechner is Programierbar 8) (<-- Hab mich zwar noch nicht damit beschäfigt ich weiß nur da es gehen soll )

P.s dies ist auch eine indirekte Antwort auf kswb73 Beitrag


@Kaeru Gaman 2

Ich gehe mal (sehr) stark davon aus das du den Code für PB4.30Beta geschrieben hast ?

Weil bei ClearScreen bekomme ich eine Fehlermeldung "Theres no current screen"
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ist dies kein (indirektes) Rechnen ?

das ist eine Termumformung, das Auflösen der Binomischen Formel.
sowas ist noch spezieller, da gibts aber auch programme dafür, bzw. kann man auch was schreiben.


> Ich gehe mal (sehr) stark davon aus das du den Code für PB4.30Beta geschrieben hast ?

falsch geraten, schau in den Code-Kopf, da steht 4.20

> Weil bei ClearScreen bekomme ich eine Fehlermeldung "Theres no current screen"

na dann kann er keinen 1280x1024 screen öffnen,
dann änder halt die konstanten mal auf die native auflösung deines monitors.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten