Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

1

16.11.2007, 21:49

Problem bei Rechnung.

Hallo,
ich hab grade ein kleines Problem, dass ich nicht lösen kann :(

Und zwar muss ich eine kleines C-Programm schreiben, dass einen Fahrkartenautomaten simuliert.

Das Programm ist soweit fertig, wenn auch nur mit wenig spektakulärem.
Mein Problem ist nun folgendes.

Wir sollen die Rückgabe, also das zuviel gezahlte Geld für ein Ticket, mit möglichst wenig Münzen berechnen.

Das ist theoretisch schon fertig, aber in der Praxis lande ich in einer unendlichschleife :(

Hier der komplette Code:
http://rafb.net/p/zJCB7h24.html

Vielleicht finde ich den Fehler ja gleich, aber ich zerbrech mir da mein Kopf am Abend :o)

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

2

16.11.2007, 22:02

Hmmm was ist wenn "iRueckgabe" kleiner 10 ist ?
dann geht es nicht weiter, oder ?

3

16.11.2007, 22:20

wenn du möglicht wenig Münzen haben willst würde ich das mit mehreren else if lösen!!

weil wenn du z.B 4 € zurück gibst wird zu den 2 € Münzen eins dazugezählt und dann bei 1 € Münzen und so weiter, besser wäre aber 2x2 € und das ereicht du mit einem verschachtelten if!!

ansonst sehe ich aber keinen Fehler!


the live
my work is my passion

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

4

16.11.2007, 22:22

Hallo,
ja der denkansatzt kam mir auch bereits.
Ich denke Modulo kann mir da auch noch helfen.
Werd mal gucken was ich da so machen kann.

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

5

16.11.2007, 23:20

Ob es nu grad Modulo sein muss is die Frage, aber auf jeden Fall wird das Ganze wesentlich einfacher, wenn du einfach nen integer nimmst und dann gleich in cent (oder was halt die kleinste Einheit der Aufgabe sein soll) rechnest.

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

6

17.11.2007, 09:56

Hallo grek40,
ja hab es Gesternabend noch mit Interger gemacht.
Hab aber auch nur eine unendlichschleife hinbekommen.

Ich werde Heutenachmittag weiter dran arbeiten.
Vielleicht finde ich eine Lösung.

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Phil_GDM

Alter Hase

Beiträge: 443

Wohnort: Graz

Beruf: Student-Softwareentwicklung u. Wissensmanagement

  • Private Nachricht senden

7

17.11.2007, 10:44

Zitat von »"T-VIRUS"«

Hallo grek40,
Vielleicht finde ich eine Lösung.
MFG T-Virus


Du hast die Lösung eigentlich schon von DataByte im ersten Reply erhalten.
dRueckgabe erreicht unter Umständen nie den Wert 0.

Bsp: dRückgabe = 0.13
dann wird dRückgabe 0.03
und in welchem if-Block landest du dann, bzw. welchen Wert hat
dRückgabe ab jetzt in jedem Schleifendurchlauf?

mfg Philipp

8

17.11.2007, 11:30

leg dir einen Array an, in dem du festlegst welche Münze welchen Wert hat. Dann gehst du einfach hin und gehst die einzellnen Münzen von hohem zum niedrigen Wert durch ... Teilst dabei deine Summe durch die aktuelle Münze und castest das auf ne Ganzzahl. Dann einfach Summe -= die gecastete Zahl * aktuelle Münze ..
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

9

17.11.2007, 11:44

Hallo,
ich hab Gestern schon mit Databyte darüber gesprochen.
Ansich wird es immer funktionieren, da die kleinste Münze immer 0.10€ ist.
Somit kann es immer klappen.

Das Problem ist nur, das er immer beim Wert 0.10 nicht mehr weiter rechnet.

Ich werd mal gucken woran das liegt.

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

17.11.2007, 12:57

Könnest du bitte nochmal den aktuellen Code posten? Weil in dem Code da oben sind Münzwerte unter 0.10 garnicht vorgesehen Oo. Wo ist da die Bedingung für 0.05, 0.02 und 0.01? (Eigentlich stelle ich damit nur nochmal die Frage, die meine Vorredner alle schon gestellt haben).

Also zeig mal den aktuellen Code. Danke :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige