Visual Basic: Brauche Hilfe bei einem Taschenrechner?

Hey Leute, ich mache gerade einen Taschenrechner in VB 6 und habe dabei zwei Probleme.

  1. Problem:

Der Taschenrechner kann höchstens drei Zahlen aufeinmal speichern. Bei der Eingabe steht zuerst die erste Zahl in der Anzeige des Taschenrechners, dann nur das erste Rechenzeichen, dann nur die zweite Zahl, dann nur das zweite Rechenzeichen, dann nur die dritte Zahl und wenn man dann wieder auf ein Rechenzeichen klickt, werden zu erst die drei Zahlen zusammengerechnet und dann erscheinen das Ergebnis und das nächste Rechenzeichen GLEICHZEITIG in der Anzeige. Mein Problem ist, dass wenn ich dann die nächste Zahl eingebe, dass dann eigentlich diese allein ohne das Ergebnis und das Rechenzeichen in der Anzeige erscheinen sollte, aber bei mir steht dann alles gleichzeitig in der Anzeige.

2 . Problem:

Wenn ich zwei Zahlen und ein Rechenzeichen eingebe und dann auf Gleich klicke, kommt das richtige Ergebnis raus, aber bei drei Zahlen nicht.

  1. Wenn man durch Null dividiert, soll in der Anzeige die Nachricht "Man darf nicht durch Null dividieren" erscheinen

Variablen, die ich benutzte:

Dim Zahl1 As Double

Dim Zahl2 As Double

Dim Zahl3 As Double

Dim Operation1 As String <-- für das erste Rechenzeichen

Dim Operation2 As String <-- für das zweite Rechenzeichen

Dim Ergebnis As Boolean <-- wird auf True gesetzt, wenn das Ergebnis alleine oder noch ein Rechenzeichen dazu in der Anzeige stehen

Dim Zahl1N As Boolean <-- werden alle drei benutzt, um zu sehen, ob eine Zahl positive oder negativ ist

Dim Zahl2N As Boolean

Dim Zahl3N As Boolean

Und die Anzeige des Taschenrechners heißt "edAnzeige"

Um das erste Problem zu lösen habe beim Code der Buttons für die Zahlen 0-9 folgendes geschrieben:

'Wenn ein Ergebnis und ein Rechenzeichen in der Anzeige stehen

ElseIf (Ergebnis = True) And (edAnzeige <> " ") And (Operation1 <> " ") And (Operation2 = " ") Then

edAnzeige = " "

Dadurch wurde das Problem bei den Rechenzeichen Mal und Geteilt gelöst, aber immer noch nicht bei Plus und Minus.

Hier ist der Teil des Codes, den ich für einen Fall beim Button geschrieben habe (2. Problem):

'Wenn die erste Zahl, ein Plus, die zweite Zahl, ein zweites Plus und eine dritte Zahl eingegeben wurde

ElseIf (edAnzeige <> " ") And (Operation1 = "+") And (Operation2 = "+") Then

Zahl3 = edAnzeige

edAnzeige = Zahl1 + Zahl2 + zahl3

Zahl1 = edAnzeige

Operation1 = ""

Operation2 = ""

Zahl1N = False

Zahl2N = False

Zahl3N = False

Ergebnis = True

Das hier habe ich beim Button für die Zahl 0 im Code geschrieben (Problem 3):

'Wenn durch Null dividiert wird

If (edAnzeige = " / ") Then

edAnzeige = "Man darf nicht durch Null dividieren"

Der Code für das dritte Problem klappt allerdings auch nicht.

Ich kann bei keinem der Codes irgendwelche Fehler entdecken. Deshalb hoffe ich, dass mir hier vielleicht jemand weiterhelfen kann.

LG Hiavatha8

Programm, programmieren, Informatik, Taschenrechner
Wie berechnet man den Aschermittwoch?

Guten Morgen,

ich möchte mir den Aschermittwoch berechnen, ein Teil eines Programmes. Nur blöderweise habe ich einen Denkfehler (denke ich mal).

Also, was ich zur Zeit habe:

  1. Es wird überprüft, ob das Jahr ein Schaltjahr ist, so wie hier unten jetzt textlich dargestellt wird:

    Jahr Modulo 400 = 0  //Schaltjahr
    
    Jahr Modulo 4 = 0 //Schaltjahr
    
    Jahr Modulo 100 = 0 //Kein Schaltjahr
    
    Alle anderen Jahre sind keine Schaltjahre
  2. Ostersonntag wird nach der Gaußsche Osterformel berechnet (hier erspar ich euch die Rechnung, aber man findet die Formel bei Wikipedia und benutze diese genau so im Programm).

  3. Nun weiß man, dass Aschermittwoch 46 Tage vor Ostersonntag ist. Also geht mein Gedanke so weiter:

    Ostersonntag (z.b. 27.03.2016) - 46 Tage
    
    Nun hab ich es so gemacht, dass -46 + 27 gerechnet wird und derMonat um eins vermindert wird, sodass - 19 herauskommt und schlussendlich 29 (Februar hat 28 Tage, wegen Schaltjahr) - 19 gerechnet wird und das Ergebnis herauskommt, wann Aschermittwoch ist, in diesem Fall: 10.02.2016 
  4. So weit, so gut. Hier dachte ich, dass ich es geschafft habe. Bei der Überprüfung aber, ob dies wirklich funktioniert kam heraus, dass z.B. für das Jahr 2032 (auch Schaltjahr) Aschermittwoch am 12.02.2032 sei, obwohl es laut dem Internet am 11.02.2032 sei. (1 Tag Unterschied). Beim Jahr 2036 (auch Schaltjahr) kam bei mir 28.02.2036 heraus, laut Internet ist es aber am 27.02.2036 (wieder 1 Tag Unterschied). Für das Jahr 2041 z.B. kommt bei mir 06.03.2041 heraus, laut Internet ist dies korrekt!


Nun ist meine Frage, wieso das so ist? Ist irgend etwas falsch an meiner Denkweise, oder hab ich etwas vergessen in der Rechnung, oder sonst irgend etwas? Ich persönlich kann es mir halt nicht erklären, dass nur das Schaltjahr ab einem bestimmten Jahr nicht mehr funktioniert. Kann mir hier wer helfen?

Danke schon mal im Vorraus!

Mit freundlichen Grüßen Shinba8

Fehler, Programm, Kalender, programmieren, Ostern, Aschermittwoch, Feiertag, denkweise, kirchenjahr

Meistgelesene Beiträge zum Thema Programmieren