Taschenrechner ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Guten Morgen ,
ich habe mir mal den Fehler der Subtraktion angesehen ..
Es ist so der Compiler denkt , dass :

Code: Alles auswählen

Ergebnis - Zahl
Das der Code so aussieht :

Code: Alles auswählen

Ergebnis + (-Zahl)
Vermute ich mal ... Daher kommt ein negativer anstatt ein positever Wert
raus ... Hat dafür jemand ne Lösung ?
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

pardon?

hat denn deine zahl im string ein minus oder nit?

wenn deine zahl positiv ist, dann wird sie abgezogen wenn du

Code: Alles auswählen

Ergebnis - Zahl
rechnest.

deine beiden codes sind übrigens absolut gleichwertig.
(und der compiler denkt nix, der macht nur, was du ihm hinschreibst.)

wenn allerdings der wert, die du vorher in Ergebnis hattest, kleiner ist (im absoluten wert) als Zahl,
dann ist das ergebnis davon logischer weise negativ.

Code: Alles auswählen

Ergebnis = 5
Zahl = 9

Ergebnis - Zahl

Debug Ergebnis
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Es ist halt so ... Bei mir steht :

Code: Alles auswählen

Ergebnis - Zahl
So und wenn ich als erste Zahl 99 eingebe und als zweite Zahl 11 erhalte ich -88 ...
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

wenn du schreibst

Code: Alles auswählen

Ergebnis = 30
und

Code: Alles auswählen

Zahl = 10
dann wird für

Code: Alles auswählen

Ergebnis - Zahl
auch
herauskommen

Gruß
Scarabol

PS
Indem was du oben schreibst hast du dich in der Reihenfolge vertan
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

Hier ist mal mein Code ... Vielleicht is da was falsch :wink:

Code: Alles auswählen

Eingabe.s = GetGadgetText(#String_2)
  Zahl.d = ValD(Eingabe.s)
  SetGadgetText(#String_2,"")
  If Funktionen = 1
    Ergebnis + Zahl
    EndIf
  If Funktionen = 2
    Ergebnis - Zahl
    EndIf
  If Funktionen = 3
    Ergebnis * Zahl
    EndIf
  If Funktionen = 4
    Ergebnis / Zahl
    EndIf
  If Funktionen = 5
    SetGadgetText(#String_2, StrD(Ergebnis+Zahl,2))
    EndIf
  If Funktionen = 0
    Ergebnis = 0
    EndIf
EDIT : Oh mein Gott , das is ja völliger Mist ^^
Zuletzt geändert von Fusselohr am 03.04.2007 11:54, insgesamt 1-mal geändert.
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Moin Scarabol *winke*
....ich bin eh gleich raus, muss gleich essen machen...

Fusselohr hat geschrieben:Es ist halt so ... Bei mir steht :

Code: Alles auswählen

Ergebnis - Zahl
So und wenn ich als erste Zahl 99 eingebe und als zweite Zahl 11 erhalte ich -88 ...
das ist aber komplett unlogisch....

du müsstest entweder 88 oder -110 rausbekommen...

Code: Alles auswählen

Ergebnis = 0
Zahl = 99
Ergebnis - Zahl
Debug Ergebnis
Zahl = 11
Ergebnis - Zahl
Debug Ergebnis

Code: Alles auswählen

Ergebnis = 0
Zahl = 99
Ergebnis + Zahl
Debug Ergebnis
Zahl = 11
Ergebnis - Zahl
Debug Ergebnis
es wäre interessant, wenn man dein programm mal testen könnte.

dafür nützt dein code so wie er ist wenig, weil keiner von uns erst noch ein dutzend images malen möchte.

vielleicht könntest du ja mal eine abgespeckte version schreiben,
die keine externen bilder benutzt und deutlich kürzer ist,
aber die sich so verhält wie du beschreibst....

dann könnten wir da was testen bzw. schon am geposteten code sehen, wo der kniff liegt.

PS:
oh, da ist ja schon ein bisschen code.

beschreib doch mal bitte, in welcher reihenfolge du das jetzt bedienst, dass dann -88 rauskommt...
Zuletzt geändert von Kaeru Gaman am 03.04.2007 11:54, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

An dem Code ist nichts falsch.

Könntest du mal ne zip packen und hier den Link posten damit ich mal den Code als ganzes testen kann.

Gruß
Scarabol

PS
Mist da war wieder einer schneller :wink:
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Fusselohr
Beiträge: 236
Registriert: 02.04.2007 10:43
Kontaktdaten:

Beitrag von Fusselohr »

http://rpgfire.lunaticgames.org/RPG-Rechner.zip

@ Kaeru Gaman : Also ich geb halt die erste Zahl in das Feld ein ...
Gehe im Menü auf subtrahieren ( da die Buttons noch nicht funktionieren ^^ ) , dann geb ich die nächste Zahl ein und geh auf Ergebnis ^^
Mein Projekt besteht immernoch und wächst stündlich.

Du willst die Entwicklung mitverfolgen ?
Dann besuche jetzt den Entwicklungsblog unter
http://rpg-fire-games.blogspot.com/
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Kaeru Gaman hat geschrieben:Moin Scarabol *winke*
....ich bin eh gleich raus, muss gleich essen machen...

Fusselohr hat geschrieben:Es ist halt so ... Bei mir steht :

Code: Alles auswählen

Ergebnis - Zahl
So und wenn ich als erste Zahl 99 eingebe und als zweite Zahl 11 erhalte ich -88 ...
das ist aber komplett unlogisch....
Wieso? Wenn er 11-99 rechnet, dann ist es logisch. :wink:
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> ( da die Buttons noch nicht funktionieren ^^ )
argl.. das sagt er jetzt... :lol:

> Also ich geb halt die erste Zahl in das Feld ein ... Gehe ... auf subtrahieren ... dann geb ich die nächste Zahl ein und geh auf Ergebnis

so wie dein rechner jetzt programmiert ist, arbeitet er mit Umgekehrter Polnischer Notation, wie eine Registrierkasse oder Büro-Rechenmaschine, aber nicht wie ein normaler taschenrechner.

das bedeutet, du müßtest
[11] [PLUS]* [99] [MINUS]** [=] eingeben
* für +11 als ausgangswert
** für -99 als zweiten wert

...für normale noatation wird das etwas schwieriger, denn du müsstest dir die funktion merken, um sie dann später nach der eingabe der zahl bei der nächsten funktionseingabe erst auszuführen...
Zuletzt geändert von Kaeru Gaman am 03.04.2007 12:07, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten