tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
339
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    galeoness Tutorials.de Gastzugang
    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
     

  2. #2
    Avatar von MBDealer
    MBDealer MBDealer ist offline Mitglied Silber
    Registriert seit
    Jan 2005
    Ort
    Borken-Weseke
    Beiträge
    99
    Hallo,

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

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    
    #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 */
     
    MfG

    Rafael (MBDealer)

    | suricate-develop.de | mbdealer.de |

Ähnliche Themen

  1. 100 Euro Auftrag
    Von barox_2 im Forum Stellenangebote (entgeltlich)
    Antworten: 3
    Letzter Beitrag: 12.11.06, 05:50
  2. DSL Flatrate für 0,00 euro oder für 3,90 Euro. Haken
    Von convo im Forum Internet, DSL & Flatrate
    Antworten: 1
    Letzter Beitrag: 06.06.05, 14:49
  3. photoshop 7 für 72 Euro
    Von Yasin im Forum Photoshop
    Antworten: 6
    Letzter Beitrag: 04.04.05, 07:08
  4. Euro
    Von spiggy im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 03.12.02, 16:55
  5. euro ******
    Von Meister Eder im Forum Photoshop
    Antworten: 16
    Letzter Beitrag: 05.01.02, 20:56