Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Fahrkartenautomat  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
einloggunwilliger
Unregistrierter




Beitrag einloggunwilliger Unregistrierter 18:09:48 02.09.2010   Titel:              Zitieren

sorry, zu 1 meinte ich natürlich 13,20.
aber auch der Ansatz von andi01 führt zu dem Ergebnis das ich Dir aufgezeigt habe.
Um das Münzverhältnis das Dein Lehrer will zu erreichen könntest Du andis Ansatz modifizieren indem Du sagst max. 4 2€-Münzen, max. 2 1€-Münzen usw.
Aber eine Logik sehe ich darin nicht.
unskilled
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.07.2007
Beiträge: 3712
Beitrag unskilled Mitglied 18:09:58 02.09.2010   Titel:              Zitieren

SWISS_BOY schrieb:
einloggunwilliger schrieb:
ok, da wird sicher noch etwas mehr im Automaten geprüft, ich kenne auch welche deren Münzröhren unterschiedlich hoch sind.

Aber 2 Fragen bleiben mir:
1. Wer zahlt 11,80 mit einem 20 und einem 5 Euro-Schein?
2. Woher kommt das vorgegebene Münzverhältnis?



1. Niemand zahlt 11.80. 11.80 = Rückgeld
2. Vom Lehrer

1. na gut - bei 13,20€ sollte man natürlich mit nem 20 und nem 5€ schein zahlen... ^^

2. da muss ja nen system dahinter stecken - das solltest du in erfahrung bringen...
bsp: schreibe ein programm, was eine beliebige zahl in faktoren zerlegt.
eingabe:
100
ausgabe:
2*2*5*5

na dann zerleg jetzt mal 70 - damit du weist, wie du das anstellen sollst, müsste ich dir schon sagen, nach welchen kriterien die zahlen auszuwählen sind...

bb

_________________
Keiner kann besser nix als ich - Tagedieb mit Lächeln im Gesicht :o)
berniebutt
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.11.2007
Beiträge: 2219
Beitrag berniebutt Mitglied 20:57:07 02.09.2010   Titel:              Zitieren

Stellt euch vor: 'Ihr steht in einer fremden Stadt - vielleicht in einem fremdsprachigen Land - an einem Fahrkartenautomat'. Eure Probleme sind dann der Frust! Der Bus, die Tram, S-Bahn, oder Metro sind dann weg oder ihr müsst auf eigenes Risiko 'schwarz fahren'. :eek:

Wer gibt heute jemand den Auftrag für einen so dummen Fahrkartenautomaten? 'Sorry, ich kann nicht wechseln - bitte zahlen Sie passend' scheint mir nicht zuviel verlangt. ;)

_________________
http://berniebutt.npage.de


Zuletzt bearbeitet von berniebutt am 20:58:26 02.09.2010, insgesamt 1-mal bearbeitet
cpcruise
Unregistrierter




Beitrag cpcruise Unregistrierter 22:57:01 02.09.2010   Titel:              Zitieren

Oder aber dein Automat hat doch nicht unbegrenzt Münzen und kennt seinen Münzvorrat. Dann gibt er nur noch die letzten 4 2€ Münzen, die beiden letzten 1€ Münzen und die beiden letzten 50 Cent Münzen und den Rest in 20 Cent Münzen aus. :D
cpcruise
Unregistrierter




Beitrag cpcruise Unregistrierter 23:25:16 02.09.2010   Titel:              Zitieren

C/C++ 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
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
    int anz_zweieuro=4;//Anzahl vorhandener 2€ Münzen
    int anz_eineuro=2;//Anzahl vorhandener 1€ Münzen
    int anz_50cent=2;//Anzahl vorhandener 50Cent Münzen
    int anz_20cent=50000;//Anzahl vorhandener 20Cent Münzen -)
    int rück_zweieuro=0;//Anzahl Rückgabe 2€ Münzen
    int rück_eineuro=0;//Anzahl Rückgabe 1€ Münzen
    int rück_50cent=0;//Anzahl Rückgabe 50Cent Münzen
    int rück_20cent=0;//Anzahl Rückgabe 20Cent Münzen
    float preis=13.2;//Der zu zahlende Betrag
    float bezahlt=25;//Der eingeworfene Betrag
    float rückgabewert=bezahlt-preis;//Der Rückgabebetrag
    while(anz_zweieuro>0&&rückgabewert>=2)
    {
        anz_zweieuro--;
        rück_zweieuro++;
        rückgabewert-=2;
    }
    cout << "Anzahl 2 Euro Muenzen:" << rück_zweieuro << endl;
    while(anz_eineuro>0&&rückgabewert>=1)
    {
        anz_eineuro--;
        rück_eineuro++;
        rückgabewert-=1;
    }
    cout << "Anzahl 1 Euro Muenzen:" << rück_eineuro << endl;
    while(anz_50cent>0&&rückgabewert>=.5)
    {
        anz_50cent--;
        rück_50cent++;
        rückgabewert-=.5;
    }
    cout << "Anzahl 50 Cent Muenzen:" << rück_50cent << endl;
    while(anz_20cent>0&&rückgabewert>=.2)
    {
        anz_20cent--;
        rück_20cent++;
        rückgabewert-=.2;
    }
    cout << "Anzahl 20 Cent Muenzen:" << rück_20cent << endl;
    ...
C/C++ 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
int anz_zweieuro=4;//Anzahl vorhandener 2€ Münzen
int anz_eineuro=2;//Anzahl vorhandener 1€ Münzen
int anz_50cent=2;//Anzahl vorhandener 50Cent Münzen
int anz_20cent=50000;//Anzahl vorhandener 20Cent Münzen -)
int rück_zweieuro=0;//Anzahl Rückgabe 2€ Münzen
int rück_eineuro=0;//Anzahl Rückgabe 1€ Münzen
int rück_50cent=0;//Anzahl Rückgabe 50Cent Münzen
int rück_20cent=0;//Anzahl Rückgabe 20Cent Münzen
float preis=13.2;//Der zu zahlende Betrag
float bezahlt=25;//Der eingeworfene Betrag
float rückgabewert=bezahlt-preis;//Der Rückgabebetrag
while(anz_zweieuro>0&&rückgabewert>=2)
{
anz_zweieuro--;
rück_zweieuro++;
rückgabewert-=2;
}
cout << "Anzahl 2 Euro Muenzen:" << rück_zweieuro << endl;
while(anz_eineuro>0&&rückgabewert>=1)
{
anz_eineuro--;
rück_eineuro++;
rückgabewert-=1;
}
cout << "Anzahl 1 Euro Muenzen:" << rück_eineuro << endl;
while(anz_50cent>0&&rückgabewert>=.5)
{
anz_50cent--;
rück_50cent++;
rückgabewert-=.5;
}
cout << "Anzahl 50 Cent Muenzen:" << rück_50cent << endl;
while(anz_20cent>0&&rückgabewert>=.2)
{
anz_20cent--;
rück_20cent++;
rückgabewert-=.2;
}
cout << "Anzahl 20 Cent Muenzen:" << rück_20cent << endl;
...
C/C++ 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
    int anz_zweieuro=4;//Anzahl vorhandener 2€ Münzen
    int anz_eineuro=2;//Anzahl vorhandener 1€ Münzen
    int anz_50cent=2;//Anzahl vorhandener 50Cent Münzen
    int anz_20cent=50000;//Anzahl vorhandener 20Cent Münzen -)
    int rück_zweieuro=0;//Anzahl Rückgabe 2€ Münzen
    int rück_eineuro=0;//Anzahl Rückgabe 1€ Münzen
    int rück_50cent=0;//Anzahl Rückgabe 50Cent Münzen
    int rück_20cent=0;//Anzahl Rückgabe 20Cent Münzen
    float preis=13.2;//Der zu zahlende Betrag
    float bezahlt=25;//Der eingeworfene Betrag
    float rückgabewert=bezahlt-preis;//Der Rückgabebetrag
    while(anz_zweieuro>0&&rückgabewert>=2)
    {
        anz_zweieuro--;
        rück_zweieuro++;
        rückgabewert-=2;
    }
    cout << "Anzahl 2 Euro Muenzen:" << rück_zweieuro << endl;
    while(anz_eineuro>0&&rückgabewert>=1)
    {
        anz_eineuro--;
        rück_eineuro++;
        rückgabewert-=1;
    }
    cout << "Anzahl 1 Euro Muenzen:" << rück_eineuro << endl;
    while(anz_50cent>0&&rückgabewert>=.5)
    {
        anz_50cent--;
        rück_50cent++;
        rückgabewert-=.5;
    }
    cout << "Anzahl 50 Cent Muenzen:" << rück_50cent << endl;
    while(anz_20cent>0&&rückgabewert>=.2)
    {
        anz_20cent--;
        rück_20cent++;
        rückgabewert-=.2;
    }
    cout << "Anzahl 20 Cent Muenzen:" << rück_20cent << endl;
    ...


:o)
MichelM
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.12.2008
Beiträge: 338
Beitrag MichelM Mitglied 11:31:40 03.09.2010   Titel:              Zitieren

@berniebutt:
Zitat:
Wer gibt heute jemand den Auftrag für einen so dummen Fahrkartenautomaten? 'Sorry, ich kann nicht wechseln - bitte zahlen Sie passend' scheint mir nicht zuviel verlangt.


Da kenn ich einen Automaten: Den DB-Automaten! Da kannste nie mit nem Zwanziger bezahlen :mad:
ipsec
Mitglied

Benutzerprofil
Anmeldungsdatum: 08.08.2007
Beiträge: 1436
Beitrag ipsec Mitglied 11:46:34 03.09.2010   Titel:   Re: Fahrkartenautomat            Zitieren

SWISS_BOY schrieb:
"Bei einem Fahrpreis von 13,20€ und Eingabe eines 25 € Scheins werden eine vier
2-Eurostücke, zwei Eurostück, zwei 50 Centstück, und vier 20 Centstück zurückgegeben. Schreibe ein Programm, dass dieses Verhalten nachahmt."

C/C++ Code:
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
int main()
{
    cout << "Fahrpreis: 13,20€" << endl << "Eingabe in Euro: ";
    double eingabe;
    cin >> eingabe;
   
    if(eingabe == 25)
        cout << "4 x 2€\n2 x 1€\n2 x 50ct\n4 x 20ct" << endl;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
int main()
{
cout << "Fahrpreis: 13,20€" << endl << "Eingabe in Euro: ";
double eingabe;
cin >> eingabe;

if(eingabe == 25)
cout << "4 x 2€\n2 x 1€\n2 x 50ct\n4 x 20ct" << endl;
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
int main()
{
    cout << "Fahrpreis: 13,20€" << endl << "Eingabe in Euro: ";
    double eingabe;
    cin >> eingabe;
   
    if(eingabe == 25)
        cout << "4 x 2€\n2 x 1€\n2 x 50ct\n4 x 20ct" << endl;
}
(ungetestet, sollte das erforderte Verhalten aber exakt nachahmen)
antialias
Mitglied

Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 99
Beitrag antialias Mitglied 14:37:57 03.09.2010   Titel:              Zitieren

andi01:
[quote="andi01"]du könntest etwa so ansetzen:

C/C++ 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
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
float rückgabewert=bezahlt-preis;

if(rückgabewert>0)
{

while(rückgabewert>=2)//mehr als 2 euro
{
rückgabewert=rückgabewert-2;
anzahl_2_euro_stücke++;
}

while(rückgabewert>=1)//mehr als 1 euro
{
rückgabewert=rückgabewert-1;
anzahl_1_euro_stücke++;
}

while(rückgabewert>=0.5)//mehr als 50ct
{
rückgabewert=rückgabewert-0.5;
anzahl_50_ct_stücke++;
}

//... bis zur 1ct-Münze

}
C/C++ 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
float rückgabewert=bezahlt-preis;

if(rückgabewert>0)
{

while(rückgabewert>=2)//mehr als 2 euro
{
rückgabewert=rückgabewert-2;
anzahl_2_euro_stücke++;
}

while(rückgabewert>=1)//mehr als 1 euro
{
rückgabewert=rückgabewert-1;
anzahl_1_euro_stücke++;
}

while(rückgabewert>=0.5)//mehr als 50ct
{
rückgabewert=rückgabewert-0.5;
anzahl_50_ct_stücke++;
}

//... bis zur 1ct-Münze

}
C/C++ 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
float rückgabewert=bezahlt-preis;

if(rückgabewert>0)
{

while(rückgabewert>=2)//mehr als 2 euro
{
rückgabewert=rückgabewert-2;
anzahl_2_euro_stücke++;
}

while(rückgabewert>=1)//mehr als 1 euro
{
rückgabewert=rückgabewert-1;
anzahl_1_euro_stücke++;
}

while(rückgabewert>=0.5)//mehr als 50ct
{
rückgabewert=rückgabewert-0.5;
anzahl_50_ct_stücke++;
}

//... bis zur 1ct-Münze

}

Wenn man dein Programm leicht modifiziert bekommt man das Verhalten das vom Lehrer gefordert wurde:
C/C++ 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
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
float restgeld=bezahlt-preis;

int rückgabewert = int (restgeld * 100);

if(rückgabewert>0)
{

while(rückgabewert>=400)//mehr als 4 euro
{
rückgabewert=rückgabewert-200;
anzahl_2_euro_stücke++;
}

while(int(rückgabewert)>=200)//mehr als 2 euro
{
rückgabewert=rückgabewert-100;
anzahl_1_euro_stücke++;
}

while(rückgabewert>=100)//mehr als 1 euro
{
rückgabewert=rückgabewert-50;
anzahl_50_ct_stücke++;
}

//... bis zur 1ct-Münze
while(rückgabewert>=1)//mehr als a cent
{
rückgabewert=rückgabewert-1;
anzahl_1_ct_stücke++;
}

}
C/C++ 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
float restgeld=bezahlt-preis;

int rückgabewert = int (restgeld * 100);

if(rückgabewert>0)
{

while(rückgabewert>=400)//mehr als 4 euro
{
rückgabewert=rückgabewert-200;
anzahl_2_euro_stücke++;
}

while(int(rückgabewert)>=200)//mehr als 2 euro
{
rückgabewert=rückgabewert-100;
anzahl_1_euro_stücke++;
}

while(rückgabewert>=100)//mehr als 1 euro
{
rückgabewert=rückgabewert-50;
anzahl_50_ct_stücke++;
}

//... bis zur 1ct-Münze
while(rückgabewert>=1)//mehr als a cent
{
rückgabewert=rückgabewert-1;
anzahl_1_ct_stücke++;
}

}
C/C++ 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
float restgeld=bezahlt-preis;

int rückgabewert = int (restgeld * 100);

if(rückgabewert>0)
{

while(rückgabewert>=400)//mehr als 4 euro
{
rückgabewert=rückgabewert-200;
anzahl_2_euro_stücke++;
}

while(int(rückgabewert)>=200)//mehr als 2 euro
{
rückgabewert=rückgabewert-100;
anzahl_1_euro_stücke++;
}

while(rückgabewert>=100)//mehr als 1 euro
{
rückgabewert=rückgabewert-50;
anzahl_50_ct_stücke++;
}

//... bis zur 1ct-Münze
while(rückgabewert>=1)//mehr als a cent
{
rückgabewert=rückgabewert-1;
anzahl_1_ct_stücke++;
}

}


Zuletzt bearbeitet von antialias am 14:39:52 03.09.2010, insgesamt 2-mal bearbeitet
berlinbär
Unregistrierter




Beitrag berlinbär Unregistrierter 16:54:16 03.09.2010   Titel:              Zitieren

Ihr seid alle recht realitätsfremd.
Welcher Automat hat unbegrenzt Münzen vorrätig ?
Euro Programmme schmeissen immer unbegrenzt Münzen raus.
Das von cpcruise ist das einzigste was bei so einer Aufgabe einleuchtet.
C/C++ Forum :: C++ (auch C++0x und C++11) ::  Fahrkartenautomat  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.