C# Geldautomat. brauche dringend Hilfe

  • Hallo liebes Breadfish, ich habe eine Aufgabe die ich selbst nicht schaffe zu lösen. Und zwar geht es hier um einen Geldautomaten den ich in C# mit Arrays Progammieren soll.


    Die Bedingungen sind:
    "- Da der Kunde seinen Betrag nicht nur in großen Scheinen haben möchte, ist die Ausgabe wie folgt durchzuführen:
    Bei dem kleinsten Schein beginnend, sollte jeder Schein zunächst einmal ausgezahlt werden.



    - Der Rest ist dann in möglichst großen Scheinen auszugeben.
    - Fassen sie vor der Ausgabe gleiche Scheine zusammen:"


    Zurzeit sieht mein Quelltext nur so aus:
    http://pastebin.com/FyHZT9J2



    Ich hoffe sehr das mir irgendwer weiter helfen kann.
    Mfg,

    Entdecke einen neuen Reallife - Server mit Qualität!


    Forum: http://xenon-rl.de/
    Server - IP: 87.98.244.35:7778
    Teamspeak³ IP: ts.sheriff3.de

  • Ist es was Schulisches? Dann bitte ich dir deine Hausaufgabe persönlich zu lösen.


    Ob schulisch oder nicht das tut doch garnichts zur Sache


    Mach dir mal Variablen bzw eine Array mit bool Werten für 5er ausgzahlt 10er ausgzeahlt,


    Die Frage ist sollte eine STückelung angezeigt werden oder sollen bei 50 Euro zB 6 5er 2 10er ausgzahlt werden?

  • Laut aufgabenstellung wäre es bei 50 euro 1 zehner und 2 20ger.



    Könnte man mit ein paar abfragen und schleifen lösen
    Edit


    Hab mich vertan bei 50 euro wären es 2 fünfer zwei Zehner und ein zwanziger.

  • Für was sollen wir dir Helfen?


    Ist es was Schulisches? Dann bitte ich dir deine Hausaufgabe persönlich zu lösen.

    So eine dämliche Aussage habe ich noch nie gehört. Deine Beiträge sind auch nur dazu da um Deinen Postcounter um eins zu erhöhen...


    Christian, ich würde zunächst mal damit Anfangen eine Schleife zu erstellen und jeden Schein (angefangen bei 5) solange drauf zu addieren bis Du bei Schein 500 bist und noch unter dem Betrag von dem Kunden. Wenn Du bei 500 bist aber noch Geld fehlt, fängst Du an von hinten (bei 500 anfangen) solange drauf zu addieren bis der Betrag raus kommt.

  • Christian, ich würde zunächst mal damit Anfangen eine Schleife zu erstellen und jeden Schein (angefangen bei 5) solange drauf zu addieren bis Du bei Schein 500 bist und noch unter dem Betrag von dem Kunden. Wenn Du bei 500 bist aber noch Geld fehlt, fängst Du an von hinten (bei 500 anfangen) solange drauf zu addieren bis der Betrag raus kommt.


    Ist eine ziemlich komplizierte Aufgabem, da würde ich auch nen bisschen dran verzweifeln, habt ihr sowas in der Schule mal durchgenommen?

  • Mach dir ein paar abfragen mit Division nimm den Wert den du an Betrag eingibt als Integer
    dann rechne durch 50, 20 u.s.w und verwende %(Modulo) um den Rest nochmals zu Dividieren.
    Am ende solltest du die Anzahl der einzelnen Scheine haben. (Du musst darauf achten das nur angaben die durch 5 geteilt werden können angeben werden müssen)


    Also z.B


    Wert = 50;
    Wert durch 500 nicht möglich.
    Wert durch 200 nicht möglich.
    Wert durch 100 nicht möglich.
    Wert durch 50 möglich = 1 Fünfziger
    Wenn 1 fünziger geht noch kleiner?
    Wert durch 20 gleich 2 zwanziger rest 10
    Rest durch 10 = 1 zehner, geht noch kleiner?
    Rest 10 durch 5 = 2 fünfer.


    Wert 80;
    Wert durch 500 nicht möglich.
    Wert durch 200 nicht möglich.
    Wert durch 100 nicht möglich.
    Wert durch 50 möglich = 1 Fünfziger rest 30
    Rest durch 20 möglich = 1 rest 10;
    Rest durch 10 möglich = 1 rest 0;
    Falls rest 10 / 5; = 2 fünfer.


    Das ganze kannst du in eine Schleife setzen und dann abfragen.
    Dein Werte lässt du dir in einem Integer-Array ausgeben und fertig. (Multidemensional oder halt Array 0 = 500 Array 1 = 200 usw)




    int personalAmount = 250;
    int allowedBills[] = {500, 200, 100, 50, 20, 10, 5};


    int main(void)
    {
    for(int i = 0; i < 7; i++)
    {
    int Scheine = personalAmount / allowedBills[i];
    personalAmount = personalAmount - Scheine * allowedBills[i];

    if(Scheine != 0)
    {
    printf("Du hast (%i) %i Euroscheine bekommen!", Scheine, allowedBills[i]);
    }
    }
    }



    Ist es was Schulisches? Dann bitte ich dir deine Hausaufgabe persönlich zu lösen.


    Ich brauch meinen Post-Count nicht erhöhen. Wollen ja nicht damit anfangen wie du mir mal hinterher gelaufen bist deine API zu schreiben.
    Was bringt es dir die Hausaufgaben zu Schnorren wenn du in der Prüfung keine Ahnung hast wie es funktioniert? Macht sinn oder?

    11 Mal editiert, zuletzt von Warren ()

  • @iFlux:
    Das ist PAWN-Code und kein C# ^^



    Grüße


    Kostenlose Pawno Alternative / PAWN IDE -> PawnStar
    Mass Effect
    :love:

  • @iFlux:
    Das ist PAWN-Code und kein C# ^^



    Das ist C++ und C++ ist ähnlich C# und somit braucht er nur sein Output verändern das er es in der Console ausgegeben bekommt.


    int personalAmount = 250;
    int allowedBills[] = {500, 200, 100, 50, 20, 10, 5};


    int main(void)
    {
    for(int i = 0; i < 7; i++)
    {
    int Scheine = personalAmount / allowedBills[i];
    personalAmount = personalAmount - Scheine * allowedBills[i];

    if(Scheine != 0)
    {
    printf("Du hast (%i) %i Euroscheine bekommen!", Scheine, allowedBills[i]);
    }
    }
    }


    Dann nimmt er antstatt "printf" halt Conole.WriteLine.

    Einmal editiert, zuletzt von Warren ()

  • Code
    betrag = betrag - scheine * array[i];


    Kann man auch durch...

    Code
    betrag %= array[i];


    ...ersetzen.


    Kommt aufs selbe bei raus. Wollte es ihn damit besser verdeutlichen. Schau mal im obrigen Beitrag, da hab ich noch von Modulo gesprochen.
    Man kann dann auch wenn man möchte if(Scheine) verwenden.

  • ch brauch meinen Post-Count nicht erhöhen. Wollen ja nicht damit anfangen wie du mir mal hinterher gelaufen bist deine API zu schreiben.
    Was bringt es dir die Hausaufgaben zu Schnorren wenn du in der Prüfung keine Ahnung hast wie es funktioniert? Macht sinn oder?


    Vorallem die API ganz zu schreiben... :pinch: Ich habe offiziell Entwickler gesucht und auch gesagt das ich es nicht gut kann. Es sollte ein Projekt werden, damit einer das ganze fortsetzt damit andere davon profitieren können und ich habe mir selbst genügend Wissen gesammelt um zumindest einige Funktionen anbieten zu können. Vorallem hinterherlaufen - hinterhergelaufen bin ich keinem... Das Projekt steht immernoch und wird von vielen benutzt während Dein Code nichtmal vorkommt (keine Ahnung wer Du bist, wenn Du der andere bist für den ich Dich nicht halte, dann kommt vielleicht 5-10 % Code von Dir im Projekt vor). Also werde mal nicht größenwahnsinnig. Es ist ein OpenSource Projekt wo jeder mitarbeiten kann.


    Um jetzt mal wieder zum Thema zu kommen (während mein Projekt nicht mal bisschen was mit seiner Frage zu tun hat):


    Er hat auch nicht erwähnt das wir die Hausaufgaben machen sollen und er will es auch nicht schnorren. Eben weil er keine Ahnung hat fragt er hier nach. Er wird in der Prüfung das versemmeln wenns ihm keiner erklärt also was erzählst Du eigentlich für einen Schwachsinn?


    Du sagst (sinngemäß) zu ihm er soll niemanden fragen, dann erklärst Du es ihm doch bzw. postest einen Code und jetzt vertrittst Du wieder Deine Meinung vom ersten Post. Kannst Du Dich mal entscheiden? Wenn er niemanden fragt dann kann ers auch nicht lernen. Bist Du etwa auf die Welt gekommen und hast gesagt "OOOH JETZT MACHE ICH MAL NE API!!!!!". Ich glaube nicht :pinch:

  • Er hat auch nicht erwähnt das wir die Hausaufgaben machen sollen und er will es auch nicht schnorren. Eben weil er keine Ahnung hat fragt er hier nach. Er wird in der Prüfung das versemmeln wenns ihm keiner erklärt also was erzählst Du eigentlich für einen Schwachsinn?


    Ist ja ok das du die Diskussion nun anfangen möchtest, aber er hat nun seine Lösung.
    Ich wollte dir damit zeigen das ich kein Problem hab ihn die Lösung zu verraten.
    Nur wenn man sich selbst hinsetzt und lernt wie es Funktioniert dann klappt es auch in der Prüfung.


    Und zur Information, ich hab dir in deiner API geholfen und dir Tipps gegeben.
    Das steht nun aber bei der Seite, Thread kann wenn der ersteller keine Fragen hat closed werden. (Stop fighting)



    Fertige Code für C++ den man in C# leicht umwandeln kann. (Fertig so wie du es möchtest)
    #include <Windows.h>
    #include <iostream>


    int personalAmount = 250;
    int allowedBills[] = {500, 200, 100, 50, 20, 10, 5};
    int gottenBills[7];


    int main(void)
    {
    for(int i = 0; i < 7; i++)
    {
    int billCount = personalAmount / allowedBills[i];
    personalAmount %= allowedBills[i];

    if(billCount != 0)
    gottenBills[i] = billCount;
    }

    for(int i = 0; i < 7; i++)
    {
    if(gottenBills[i])
    printf("Du hast %i. %i Euroscheine!\n", allowedBills[i], gottenBills[i]);
    }
    }

    7 Mal editiert, zuletzt von Warren ()

  • Die lösungen die ihr hier zeigt sind alle falsch... Sie gehen nicht darauf ein das anfangs von jedem schein klein zu groß jewals einer ausgegeben werden sollen.


    edit: kann ein c# aber dashier sollte ansatzweise gehen,


    es geht dabei um die gestellten Bedingungen:

    Zitat

    "Da der Kunde seinen Betrag nicht nur in großen Scheinen haben möchte, ist die Ausgabe wie folgt durchzuführen:
    - Bei dem kleinsten Schein beginnend, sollte jeder Schein zunächst einmal ausgezahlt werden.
    - Der Rest ist dann in möglichst großen Scheinen auszugeben.



    Beispiel:
    der Kunde Will 200€ Ausgezahlt haben:


    200€ ist größer gleich 5.----> Ein Fünfer wird ausgezahlt
    195€ ist größer gleich 10.--> Ein Zehner wird ausgezahlt
    185€ ist größer gleich 20.--> Ein Zwanziger wird ausgezahlt
    165€ ist größer gleich 50.--> Ein Fünziger wird Ausgezahlt
    115€ ist größer gleich 100.->Ein Hunderter wird Ausgezahlt
    15€ ist nicht größer gleich 200 -> Schleife wird beendet.


    15€ ist nicht Größer gleich 500 -> nächster druchlauf
    15€ ist nicht Größer gleich 200 -> nächster druchlauf
    15€ ist nicht Größer gleich 100 -> nächster druchlauf
    15€ ist nicht Größer gleich 50 -> nächster druchlauf
    15€ ist nicht Größer gleich 20 -> nächster druchlauf
    15€ ist größer gleich 10 -> Ein Zehner wird mehr ausgezahlt
    5€ ist nicht Größer gleich 10 -> nächster druchlauf
    5€ ist größer gleich 5 -> Ein Fünfer wird Ausgezahlt


    Somit kommen nun:
    2 x 5€
    2 x 10€
    1 x 20€
    1 x 50€
    1 x 100€


    aus dem Automaten


  • Was bitte bringt ihm das wenn er keine Ahnung hat wie das gehen soll?


    Ich weiß nicht ob die Leute sich hier mit jedem anlegen...


    Wenn er es Schulisch behandelt wird sein Lehrer ihn wohl auch Informationen gegeben habe wie man es umsetzen kann.
    Oder er wird mit dem Stoff soweit sein das er es theoretisch umsetzen kann. Meine Gott... 8 Klasse oder so?

  • Oder er wird mit dem Stoff soweit sein das er es theoretisch umsetzen kann. Meine Gott... 8 Klasse oder so?


    Natürlich, es gibt aber immer momente wo man einfach nicht weiter kommt auch wenn man die einzele bestandteile gerlernt hat.
    Dies hat viel mit dem Logischen Denken zu tun. und wenn jemand die Aufgabe nicht Logisch erfassen kann braucht er eine Hilfestellung.


    wichtig ist dass er sich überlegt, warum der Code funktioniert und richtig ist.
    Wenn er dies nicht macht so wird er sowohl im Schul als auch im Arbeitsleben versagen.