Thema Datum  Von Nutzer Rating
Antwort
22.09.2019 11:11:34 Gast36809
NotSolved
Blau Aufgabe für Anfänger lösen
22.09.2019 16:01:44 Zwenn
NotSolved

Ansicht des Beitrags:
Von:
Zwenn
Datum:
22.09.2019 16:01:44
Views:
536
Rating: Antwort:
  Ja
Thema:
Aufgabe für Anfänger lösen

Hallo Gast36809,

Deine Aufgabenstellung hat eine kleine Ungenauigkeit. Der Mindestbetrag für den Fahrpreis ist nicht 0,00 Euro, sondern 0,05 Euro. Das musst Du so eigentlich auch im Code abbilden. Denn ansonsten sind Eingaben von 0,01 Euro bis 0,04 Euro für den Fahrpreis möglich, die aber in der Folge nicht aufgelöst werden können. Du musst also den Eingabewert in einer Schleife prüfen, die verlassen wird, wenn ein gültiger Fahrpreis zwischen 0,05 Euro und 5,00 Euro eingegeben wurde.

Für den eingeworfenen Betrag zum Bezahlen musst Du genauso verfahren. Genau genommen musst Du eigentlich prüfen, ob ein Betrag eingegeben wurde, der sich ohne Rest durch 0,05 teilen lässt, da 0,05 Euro die kleinste Münze ist, die verarbeitet werden kann.

Für die Berechnung des Rückgeldes teilst Du die Differenz von Eingeworfenem Geld und Fahrpreis als erstes durch den Wert der größten zur Verfügung stehenden Münze, also 2,00 Ist das Ergebnis kleiner 1, gehst Du zum Teilen durch den nächsten Münzwert über, also 1,00. Ist das Ergebnis über 1, ziehst Du den ganzzahligen Anteil vom Rückgeld ab und berechnest dann mit der nächst kleineren Münze. Das geht am Ende mit den 0,05 Euro dann immer auf und Du bekommst automatisch die optimale Rückgeldkombination. Also die mit den wenigsten Münzen.

Wie Du das machst, da musst Du mal etwas nachdenken. Als Tip noch der Hinweis, mit der Funktion Int() wirst Du den Nachkommaanteil einer Double Zahl los und es bleibt nur der Ganzzahlanteil übrig. Achte darauf, den verwendeten Variablen die richtigen Datentypen zuzuweisen. Die Funktion Int() wandelt eine Zahl in einen Integerwert um.

https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/int-fix-functions

Ich verwende das z.B., um von Zeitstempeln die Uhrzeit abzuschneiden, wenn ich nur das Datum haben will. Das funktioniert, weil Excel Zeitstempel bestehend aus Datum und Uhrzeit als Double verwaltet. Der Ganzzahlanteil sind die Tage seit dem 01.01.1900, der Nachkommaanteil ist die Uhrzeit, bzw. die vergangenen Stunden des laufenden Datums.

Angewendet wird Int() dabei so:

'Datum aus Zeitstempel
'Ergebnis ist ein Wert vom Datentyp Integer
aktuellesDatum= Int(Now())

'Uhrzeit aus Zeitstempel
'Ergebnis ist ein Wert vom Datentyp Double
AktuelleUhrzeit = Now() - Int(Now())

Viele Grüße,

Zwenn


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
22.09.2019 11:11:34 Gast36809
NotSolved
Blau Aufgabe für Anfänger lösen
22.09.2019 16:01:44 Zwenn
NotSolved