Probleme mit Euro-Aufteiler :(

G

galeoness

Moin moin...
ich bin noch ganz neu und unerfahren was C++ angeht..
deshalb brauche ich Hilfe.

Ich möchte ne progi schreiben, wo eine geldsumme möglichst logisch aufgeteilt wird, d.h. 122,22€ = 12-10€ | 0-5€ | 1-2€ | 0-1€ | 0-0,50€ .. und so weiter..

lieder habe ich das problem das er zwar die 10er 5er, und 2er richtig berechnet aber dann alles andere nicht mehr!

Hier mein programm text:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
zahl = StrToFloat (Edit1->Text);
zahl = zahl*100;
zehner = floor(zahl/1000);
Label15 -> Caption = FloatToStrF (zehner,ffNumber,8,0);
zahl = zahl-(zehner*1000);
fuenfer = zahl/500;
Label16 -> Caption = FloatToStrF (fuenfer,ffNumber,8,0);
if (fuenfer>1)
zahl = zahl-(fuenfer*1000);
zweier = zahl/200;
Label17 -> Caption = FloatToStrF (zweier,ffNumber,8,0);
if (zweier>1)
zahl = zahl-(zweier*1000);
einer = zahl/100;
Label18 -> Caption = FloatToStrF (einer,ffNumber,8,0);
if (einer>1)
zahl = zahl-(einer*1000);
fuenfziger = zahl/50;
Label19 -> Caption = FloatToStrF (fuenfziger,ffNumber,8,0);
if (fuenfziger>1)
zahl = zahl-(fuenfziger*1000);
zwanziger = zahl/20;
Label20 -> Caption = FloatToStrF (zwanziger,ffNumber,8,0);
if (zwanziger>1)
zahl = zahl-(zwanziger*1000);
zehner1 = zahl/10;
Label21 -> Caption = FloatToStrF (zehner1,ffNumber,8,0);
}


Vielen dank schonmal für die Hilfe!

AChja vielleuicht nochmal memine logik die dahinter steckt:

122,22 *100 = 12222
12222/1000 = 12,...
12 * 1000 = 12000
12222 - 12000 = 222
222/500 = 0,...
0 * 222 = 0
222 - 0 = 222
222/200 = 1,...
und so weiter
 
Hallo,

das ist zwar ein Beispiel in C und noch mit DM aber vom Prinzip das was du suchst ...

Code:
#include <stdio.h>

void main(void)
{
    float fahrpreis, geldbetrag, rueckgabe, gesamt;
    int dm5 = 0, dm2 = 0, dm1 = 0;
    int pf50 = 0, pf10 = 0, pf5 = 0, pf2 = 0, pf1 = 0;


    clrscr();

    printf("\n\nFahrkartenautomat\n===================");
    printf("\n\nZu zahlender Fahrpreis? ");
    scanf("%f", &fahrpreis);
    printf("\nEingeworfener Geldbetrag? ");
    scanf("%f", &geldbetrag);

    rueckgabe = geldbetrag - fahrpreis;


    while( rueckgabe < 0 ){
        printf("\n\nEs fehlen noch %f DM", -rueckgabe );
        printf("\nBitte weiteres Geld einwerfen! ");
        scanf("%f", &geldbetrag);
        rueckgabe += geldbetrag;
    /*    rueckgabe += 0.001;   sonst Rundungsfehler */
    }/* ende while */


    gesamt = rueckgabe; /* Gesamtbetrag, der zurueckgegeben wird */

    if( rueckgabe == 0 )
        printf("\nKeine Geldrueckgabe");
    else
        {
            while( rueckgabe >= 5 ){
                dm5++;
                rueckgabe = rueckgabe - 5.;
            }/*ende while */

            while( rueckgabe >= 2 ){
                dm2++;
                rueckgabe = rueckgabe - 2.;
            }/*ende while */

            while( rueckgabe >= 1 ){
                dm1++;
                rueckgabe = rueckgabe - 1.;
            }/*ende while */

            while( rueckgabe >= .5 ){
                pf50++;
                rueckgabe = rueckgabe - .5;
            }/*ende while */

            while( rueckgabe >= .1 ){
                pf10++;
                rueckgabe = rueckgabe - .1;
            }/*ende while */

            while( rueckgabe >= .05 ){
                pf5++;
                rueckgabe = rueckgabe - .05;
            }/*ende while */

            while( rueckgabe >= .02 ){
                pf2++;
                rueckgabe = rueckgabe - .02;
            }/*ende while */

            while( rueckgabe >= .01 ){
                pf1++;
                rueckgabe = rueckgabe - .01;
            }/*ende while */

        /*
            while( rueckgabe != 0 ){
                printf("\nDieser Geldbetrag ist durch Muenzen nicht erzeugbar");
                exit(-1);
            }
        */


        if( dm5 > 0 )
            printf("\n\t%5d * 5DM", dm5);        

        if( dm2 > 0 )
            printf("\n\t%5d * 2DM", dm2);

        if( dm1 > 0 )
            printf("\n\t%5d * 1DM", dm1);
        
        if( pf50 > 0 )
            printf("\n\t%5d * 50Pf", pf50);

        if( pf10 > 0 )
            printf("\n\t%5d * 10Pf", pf10);
        
        if( pf5 > 0 )
            printf("\n\t%5d * 5Pf", pf5);
        
        if( pf2 > 0 )
            printf("\n\t%5d * 2Pf", pf2);
        
        if( pf1 > 0 )
            printf("\n\t%5d * 1Pf", pf1);
        
        printf("\n\t****************\nRueckgabe  %.2f DM", gesamt);
        printf("\n\n");

    }/* ende else */

}/* ende main */
 

Neue Beiträge

Zurück