Deutsch
Forum

Neuer Taschenrechner.

 

Gary12345
Hallo,

simpler Code, simple Frage:
 $I MatheLeicht.inc
Window 0,0-600,400
WindowStyle 15
WindowTitle "Taschenrechner by Gary12345"
declare edittext$
var edit1& = CREATE("Edit",%HWND,edittext$,10,10,550,30)
var button1& = CREATE("Button",%HWND,"+",20,50,100,50)
var button2& = CREATE("Button",%HWND,"-",150,50,100,50)
var button3& = CREATE("Button",%HWND,":",280,50,100,50)
var button4& = CREATE("Button",%HWND,"X",410,50,100,50)
var button5& = CREATE("Button",%HWND,"Wurzel",20, 120,100,50)
var button6& = CREATE("Button",%HWND,"ADreieck",150,120,100,50)
var button7& = CREATE("Button",%HWND,"AQuadrat",280,120,100,50)
var button8& = CREATE("Button",%HWND,"ARechteck",410,120,100,50)
var button9& = CREATE("Button",%HWND,"AKreis",20,190,100,50)
var button10& = CREATE("Button",%HWND,"ATrapez",150,190,100,50)
var button11& = CREATE("Button",%HWND,"AParallelogr.",280,190,100,50)
var button12& = CREATE("Button",%HWND,"VKegel",410,190,100,50)

While 1

    WaitInput

    IF clicked(Button1&)

        edittext$ = "+"

    EndIf

EndWhile


Wie gesagt, ich gehe Schritt für Schritt vor und bitte euch nicht um den richtigen Code, sondern um Hinweise (z.B. in welchem Part der hilfe ich nachlesen solle,etc.)

Problem1:


Hilfe in XPROFAN zu Edit:

N : LongInt - Handle des übergeordneten Fensters

S : String - Vorgabetext

X1,Y1 : Integer - Linke obere Ecke des Eingabefeldes

X2,Y2 : Integer - Größe des Eingabefeldes (Sonderfunktion; siehe Text)


Nun habe ich diese Zeile:
edittext$ = "+"
Dieser String ist der Vorgabetext S. Warum fügt es nicht bei Klick eines Buttons eine "+" hinzu?

Servus
 
MfG
Gary12345
01.02.2013  
 




Julian
Schmidt
Versuchs mal per Settext!
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
01.02.2013  
 




Gary12345
Danke, daran habe ich wieder mal nicht gedacht. Sorry. Wird funken. Teste es jetzt mal o.O
 
XProfan X2
MfG
Gary12345
01.02.2013  
 




Gary12345

KompilierenMarkierenSeparieren
settext edit1&, gettext$(edit1&) + "+"

Habs dann so gelöst
 
XProfan X2
MfG
Gary12345
01.02.2013  
 




Gary12345

KompilierenMarkierenSeparieren
 $I MatheLeicht.inc
Window 0,0-600,400
WindowStyle 15
WindowTitle "Taschenrechner by Gary12345"
declare Ergebnis!
var edit1& = CREATE("Edit",%HWND,"",10,10,550,30)
var button1& = CREATE("Button",%HWND,"+",20,50,100,50)
var button2& = CREATE("Button",%HWND,"-",150,50,100,50)
var button3& = CREATE("Button",%HWND,":",280,50,100,50)
var button4& = CREATE("Button",%HWND,"X",410,50,100,50)
var button5& = CREATE("Button",%HWND,"Wurzel",20, 120,100,50)
var button6& = CREATE("Button",%HWND,"ADreieck",150,120,100,50)
var button7& = CREATE("Button",%HWND,"AQuadrat",280,120,100,50)
var button8& = CREATE("Button",%HWND,"ARechteck",410,120,100,50)
var button9& = CREATE("Button",%HWND,"AKreis",20,190,100,50)
var button10& = CREATE("Button",%HWND,"ATrapez",150,190,100,50)
var button11& = CREATE("Button",%HWND,"AParallelogr.",280,190,100,50)
var button12& = CREATE("Button",%HWND,"VKegel",410,190,100,50)
var buttonGo& = CREATE("Button",%HWND,"Rechnen",210,250,100,50)

While 1

    WaitInput

    IF clicked(button1&)

        settext edit1&, gettext$(edit1&) + "+"

    EndIf

    If clicked(button2&)

        settext edit1&, gettext$(edit1&) + "-"

    EndIf

    If clicked(button3&)

        settext edit1&, gettext$(edit1&) + "/"

    EndIf

    If clicked(button4&)

        settext edit1&, gettext$(edit1&) + "*"

    EndIf

    If clicked(buttonGo&)

        Ergebnis! = val(gettext$(edit1&))
        print Ergebnis!

    EndIf

EndWhile


Nächstes Problem:

Wollte jetzt das Ergebnis in float konvertieren (also mit @val()). Aber warum rechnet es nicht?

EDIT: Habe eine Vermutung: Kann es daran liegen, dass + kein floatwert sein kann?
 
MfG
Gary12345
01.02.2013  
 




Julian
Schmidt
Natürlich funktioniert das nicht. Val() konvertiert nur eine Zeichenkette zu einer Zahl.
Du könntest das so lösen, das du eine Zählervariable erstelltst. Und jede Rechen- Operation direkt auf diese Variable ausführst. Beim drücken der Ergebnis-Taste kannst du dann die Variable ausgeben und zurücksetzten.

Alternativ wäre die Lösung mit einem Parser möglich.
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
01.02.2013  
 




Gary12345
Werde mich morgen da mal informieren. Bin heute zu müde dafür.
 
XProfan X2
MfG
Gary12345
01.02.2013  
 




Gary12345
Was ein Parser ist, weiß ich jetzt. Was eine Zählevariable ist , kann ich nur etwas vermuten. Also Du willst, dass ich den Text von edit in eine extra Variable abspeichere, diese dann nach float umwandle und dann rechnet? Verstehe das nicht so.

Servus!
 
XProfan X2
MfG
Gary12345
02.02.2013  
 




Julian
Schmidt
In der Hilfe findest du ein einfaches Beispiel zu einem Taschenrechner ohne Parser. Die Grundidee dabei ist, das du eine leere Variable erstellt, und jede Operation auf die ausführst und dann das Ergebnis ausgibst.
Beispiel:
Du hast einen Taschenrechner mit Buttons von Zahlen 0-9 und +, -, *, /, Clear.
Am Anfang ist die Variable Ans! gleich 0. Sobald du auf den Button "+" drückst. Wird dieser Operator in einer weiteren Variable gespeichert. Sobald du nun auf einen Zahl klickst, wird Ans! mit dem gespeicherten Operator und der gedrückten Zahl erweitert und !Ans als Ergebnis ausgegeben.

Die Grundüberlegung bei einem Parser ist, dass man die komplizierteste Formel in Bestandteile (substr) zerleget, die nach dem Schema "Variable Operator Variable" aufgebaut sind. Man geht dabei Rückwärts vor und sucht nach der am tiefsten verschachtelten Rechenoperation nach den Regeln der Mathematik. Sprich Klammer vor Potenz vor Punkt vor Strich. Dieser Vorgang wird solange wiederholt bis keine Operatoren mehr zufinden sind.
Hier ein Beispiel:
8*2+(7-4)
16+(7-4)
16+3
19

Hier ein Beispiel [...] 
 
XProfan X2
Win7 Professional, SP1, AMD FX(tm)-8350 Eight-Core Processor

˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗
Webseite [...] 
02.02.2013  
 




Jörg
Sellmeyer
Ich würde dir auch empfehlen, dich erstmal auf die Grundrechenarten zu beschränken und nur einfache Rechenoperation auszugeben, bis du das Prinzip beim Programmieren so halbwegs verstanden hast.
10 Button mit den Ziffern von 0-9 sind schnell erstellt. Dann noch 4 für die Operanden und einer für =.
Du kannst zB jeden Buttonkick eingabe in einer Liste speichern und beim Klick auf den Ergebnisbutton, die Liste abarbeiten.

Die Eingabe per Button von 72 + 8 - 4 ergibt dann eine Liste von:
"72"
"+"
"8"
"-"
"4"

Wenn der Ergebnisbutton gedrückt wird wandelst du das dann in eine Rechenoperation um.+
Das Gleiche machst du dann mit Multiplikation und Division.

Wenn das funktioniert, kannst du dich auch an einfache Kombinationsaufgaben ranwagen.
zB 8 * 12 + 7
Hier musst du dann die ganze Liste erstmal durcharbeiten, um die Rechenregeln anzuwenden. Du "parst" also die Liste.

Als nächstes kannst du dann noch Klammern einbauen. Da wird das Parsen schon etwas aufwendiger.
Julians Beispiel benötigt übrigens noch keine Klammern, da es mit den Rechenregeln automatich funktioniert:
print 8 * 2 + (7 - 4)
print 8 * 2 + 7 - 4

Erst so, sind Klammern nötig und es gibt natürlich ein anderes Ergebnis:
print 8 * (2 + 7) - 4

In dem Fall würde ich mit einer Gridlist arbeiten und die Klammernblocks in die nächste Spalte setzen:

Spalte 1Spalte 2Spalte 3
8
*
(
2
+
7
)
-
4

Da brauchst du dann nur auf jede Spalte deine Parserprozedur anwenden und erhälst jeweils korrekte Ergebnisse.
Aber immer einen Schritt nach dem anderen. Erstmal die simplen Grundrechenarten.

[OFFTOPIC]puh - ist das ein Umstand mit der Tabelle aber jetzt hab ich es zumindest geschnallt...
Leider funktioniert bei mir der "Vorschau"-Button nicht. Geht das anderen auch so oder ist das ein lokales Problem bei mir?[/OFFTOPIC]
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
02.02.2013  
 



Der Vorschau Btn. geht bei mir sogar hier grad ausm Bett aufm Handy gg.

Zeigt Vorschau überm Editor - bisl hochscrollen, benötigt JS.


85 kB
Hochgeladen:02.02.2013
Ladeanzahl197
Herunterladen
 
02.02.2013  
 




Jörg
Sellmeyer
Ich hab JS aktiviert und trotzdem keine Vorschau
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
02.02.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

18.177 Betrachtungen

Unbenanntvor 0 min.
Stringray05.01.2022
Jörg Sellmeyer15.05.2018
Matthias Arlt18.02.2016
rquindt19.09.2015
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie