Problem mit Geldautomat in C

Meine Änderung, daher das d.quot-1 und das val=d.rem+scheine sollte bewirken, dass er nun auch nicht bei 100 Euro 2 mal 50 ausgibt, sondern so wie ein Geldautomat eben stückelt ^^ Aber wie du geschrieben hast, beim letzten Schein wär es ein problem.

Danke dennoch, interessant ^^

So wie ich das nun verstehe,
kommen bei 500€ bei dir 5 mal 100€ raus.
bei mir 4*100€, 1*50€, 1*20€, 2*10€, 1*5€ und dann gibts n Absturz bzw ne Schleife :p
Das meinte ich ursprünglich, aber wie gesagt, das bringt ja alles nix wenns am Schluss net läuft ^^
 
Zuletzt bearbeitet:
hmm, habs net gnaz verstanden, was du meintest, ist aber egal. in etwa so gehts. man muss es nicht ganz genau so machen, sodass man die stückelungsart anpassen kann wie man lustig ist.

wichtig ist das grundgerüst und das wie hier in quasi konstanter laufzeit geschieht (beschränkt durch die anzahl der möglichen verschiedenen scheine).

wenn sonst fragen da sind oder mal einer nen tip braucht zum thema programmierung allgemein oder c/c++ kann man mir gerne auch mal ne pn schicken. aber bitte konkrete fragen, keine ganzen programmieraufträge ;)
 
nunja, sagen wir JAIN. ich hab bereits erfahrungen mit vielen anderens prachen, java, assembler und andere, diverse script-sprachen. aber wenn ich die über längere zeit nicht nutze vergesse ich details.

im grunde programmiert es sich mit jeder programmiersprache gleich. d.h. ich kann dir allgemein wie man etwas zu progrmamieren hat fragen beantworten. wenn du aber sprachspezifische dinge wissen willst, dann beschränken wir das leiber mal auf c/c++ :) . unter umständen noch java.
 
Würde es in etwa so machen (C#, aber vom Prinzip denke ich verständlich):
Code:
string[] pins = { "1234", "4321" };

Console.Write("KtNr: ");
int KtNr = Convert.ToInt32(Console.ReadLine());

Console.Write("Betrag: ");
int Betrag = Convert.ToInt32(Console.ReadLine());
while (Betrag % 10 != 0 || Betrag > 1000)
{
    Console.Write("Betrag ungültig, nochmal: ");
    Betrag = Convert.ToInt32(Console.ReadLine());
}

string strPIN = "";
int Versuche = 3;
while (strPIN != pins[KtNr])
{
    if (Versuche < 1)
    {
        Console.WriteLine("Karte eingezogen.");
        return;
    }
    Console.Write("PIN (noch {0} Versuche): ", Versuche);
    ConsoleKeyInfo k;
    while ((k = Console.ReadKey(true)).Key != ConsoleKey.Enter)
        strPIN += k.KeyChar;
    Versuche--;
}

Console.WriteLine("Betrag wird ausgezahlt...");
int Anzahl;
int[] Scheine = { 100, 50, 20, 10 };
foreach (int Schein in Scheine)
{
    Anzahl = Betrag / Schein - 1;
    Console.WriteLine("Zahle {0} {1}-Euro-Scheine aus", Anzahl, Schein);
    Betrag = Betrag - Anzahl * Schein;
}

Console.WriteLine("Vorgang abgeschlossen, auf Wiedersehen.");
Console.ReadLine();
Anmerkung: Bei der Kontonummer und Betrag wird von einer gültigen int-Eingabe ausgegangen, bei der KtNr außerdem, dass sie existiert.
 
Zurück
Oben