Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Getränkeautomat in C

278 views
Skip to first unread message

pascal lonsmeier

unread,
Jun 25, 2002, 4:09:33 PM6/25/02
to
Hallo,

kann mir jemand evtl. nen virtuellen getränkeautomat in c erstellen?

Sebastian Lehmann

unread,
Jun 26, 2002, 3:48:17 AM6/26/02
to
Hallo Pascal,

>-----Originalnachricht-----


>Hallo,
>
>kann mir jemand evtl. nen virtuellen getränkeautomat in c
erstellen?

>.

Bezahlung??? :)

Sebastian.

Dietmar Stupka

unread,
Jun 26, 2002, 4:56:40 AM6/26/02
to
Hallo Pascal!

Ich würde Dir eher so Werkstoffe wie Alu oder PVC empfehlen.
Eine reine Carbon-Lösung wird vermutlich etwas teuer werden!

;-)

Dietmar

"pascal lonsmeier" <pasca...@t-online.de> wrote in message
news:104d801c21c84$38947770$37ef2ecf@TKMSFTNGXA13...

Wilhelm Noeker

unread,
Jun 26, 2002, 6:06:28 AM6/26/02
to
"pascal lonsmeier" <pasca...@t-online.de> schrieb...

> kann mir jemand evtl. nen virtuellen getränkeautomat in c erstellen?

Aber gern doch! Wenn bloß meine Probleme auch so einfach wären...

#include <stdio.h>
#include <stdlib.h>

#define NCHOICE 3

int main()
{
char *pcaName[ NCHOICE ] = { "Fanta", "Kaffee", "Schnaps" };
float flaPrice[ NCHOICE ] = { 1.30f, 0.80f, 2.50f };
char caBuf[ 20 ];
int i, nSelect;
float flPaid;

for( ;; )
{
do {
for( i=0; i<NCHOICE; i++ )
printf( "%d=%s%c ", i+1, pcaName[ i ], (i==NCHOICE-1) ? ':'
: ',' );
fgets( caBuf, sizeof( caBuf ), stdin );
nSelect = atoi( caBuf );
if( nSelect < 0 )
return 0;
} while( nSelect<1 || nSelect>NCHOICE );
nSelect -= 1;
flPaid = 0;
while( flPaid < flaPrice[ nSelect ] )
{
printf( "Bitte Geld einwerfen (%.2f/%.2f): ", flPaid,
flaPrice[ nSelect ] );
fgets( caBuf, sizeof( caBuf ), stdin );
if( atof( caBuf ) <= 0 )
break;
flPaid += (float)atof( caBuf );
}
if( flPaid >= flaPrice[ nSelect ] )
{
printf( "Einmal %s. Prost, mein Freund!\n", pcaName[ nSelect] );
flPaid -= flaPrice[ nSelect ];
}
if( flPaid > 0 )
printf( "%.2f Retour.\n", flPaid );
printf( "\n" );
}
}

SCNR :-)

Eberhard Schefold

unread,
Jun 26, 2002, 6:14:39 AM6/26/02
to
Wilhelm Noeker schrieb:

> Aber gern doch! Wenn bloß meine Probleme auch so einfach wären...

Für den Anfänger, der eine Übungsaufgabe lösen soll, ist es das nicht.
Deshalb meine ich, ist mit derartigen Komplettlösungen auch niemandem
tatsächlich geholfen.

Wilhelm Noeker

unread,
Jun 26, 2002, 6:35:05 AM6/26/02
to
"Eberhard Schefold" <eb...@gmx.de> schrieb...

OK, und off-topic war es obendrein. Die Fragestellung hatte einfach meinen
Spieltrieb geweckt, und ich hatte gehofft, mit "SCNR" hätte ich das
hinreichend zum Ausdruck gebracht.

Ich tu's jedenfalls nicht wieder, versprochen.

Thomas Klocker

unread,
Jun 26, 2002, 6:35:40 AM6/26/02
to
Hallo!

>kann mir jemand evtl. nen virtuellen getränkeautomat in c
erstellen?

Ach wie gut das ich heute frei hab, und somit Zeit hab so
was zu machen ;)

#include <string>
#include <iostream>
#include <list>

//A Getraenk
class Getraenk
{
public:

Getraenk();
Getraenk(std::string strName, double dFuel = 0.33,
double dPreis = 0.50);
virtual ~Getraenk();

void SetGetraenkName(std::string strName);
void SetFuel(double dCL);
void SetPreis(double dPreis);

std::string GetGetraenkName();
double GetFuel();
double GetPreis();

private:

std::string m_strName;
double m_dFuel;
double m_dPreis;
};

Getraenk::Getraenk()
{
m_strName = "Coca Cola";
m_dFuel = 0.33;
m_dPreis = 0.50;
}

Getraenk::Getraenk(std::string strName, double dFuel,
double dPreis)
{
m_strName = strName;
m_dFuel = dFuel;
m_dPreis = dPreis;
}

Getraenk::~Getraenk()
{
}

void Getraenk::SetGetraenkName(std::string strName)
{
m_strName = strName;
}

void Getraenk::SetFuel(double dCL)
{
m_dFuel = dCL;
}

void Getraenk::SetPreis(double dPreis)
{
m_dPreis = dPreis;
}

std::string Getraenk::GetGetraenkName()
{
return m_strName;
}

double Getraenk::GetFuel()
{
return m_dFuel;
}

double Getraenk::GetPreis()
{
return m_dPreis;
}

//Der Automat
class Automat
{
public:

Automat();
virtual ~Automat();

bool AddGetraenk(Getraenk getr, int nAnzahl);
bool DeleteGetraenk(std::string strGetraenk);

int GetAnzahlGetraenk(std::string strGetraenk);

private:

std::list<Getraenk> m_lGetraenk;
typedef std::list<Getraenk>::iterator LI;
};

Automat::Automat()
{
}

Automat::~Automat()
{
}

bool Automat::AddGetraenk(Getraenk getr, int nAnzahl)
{
if(nAnzahl <= 0)
return false;

for(int i=0; i<nAnzahl; i++)
m_lGetraenk.push_back(getr);

return true;
}

bool Automat::DeleteGetraenk(std::string strGetraenk)
{
try
{
for(LI i = m_lGetraenk.begin(); i !=
m_lGetraenk.end(); ++i)
{
if((*i).GetGetraenkName() ==
strGetraenk)
{
i = m_lGetraenk.erase(i);
break;
}
}
}
catch(...)
{
return false;
}

return true;
}

int Automat::GetAnzahlGetraenk(std::string strGetraenk)
{
int cnt = 0;

try
{
for(LI i = m_lGetraenk.begin(); i !=
m_lGetraenk.end(); ++i)
{
if((*i).GetGetraenkName() ==
strGetraenk)
++cnt;
}
}
catch(...)
{
return -1;
}

return cnt;
}

int main(int argc, char* argv[])
{
Getraenk getr("Coca Cola");
Getraenk getr2("Fanta");

Automat automat;
automat.AddGetraenk(getr, 2);
automat.AddGetraenk(getr2, 3);


std::cout << automat.GetAnzahlGetraenk("Coca
Cola") << " Colas\n";
std::cout << automat.GetAnzahlGetraenk("Fanta")
<< " Fantas\n\n";

std::cout << "1 Cola und 2 Fanta
rausgenommen:\n\n";

automat.DeleteGetraenk("Coca Cola");
automat.DeleteGetraenk("Fanta");
automat.DeleteGetraenk("Fanta");

std::cout << automat.GetAnzahlGetraenk("Coca
Cola") << " Colas\n";
std::cout << automat.GetAnzahlGetraenk("Fanta")
<< " Fantas";

std::cin.get();
return 0;
}

HTH

Thomas

Wilhelm Noeker

unread,
Jun 26, 2002, 6:45:10 AM6/26/02
to
"Thomas Klocker" <klock...@gmx.net> schrieb ...

> >kann mir jemand evtl. nen virtuellen getränkeautomat in c
> erstellen?
>
> Ach wie gut das ich heute frei hab, und somit Zeit hab so
> was zu machen ;)
>
> #include <string>
> #include <iostream>
> #include <list>

[schnips]

He! Von C++ war nicht die Rede! :-)

Thomas Klocker

unread,
Jun 26, 2002, 6:50:48 AM6/26/02
to
Hallo!

>> #include <string>
>> #include <iostream>
>> #include <list>
>[schnips]
>
>He! Von C++ war nicht die Rede! :-)

Shit! Na ja, kommt davon wenn man nicht genau liest.

Thomas Klocker

unread,
Jun 26, 2002, 6:50:54 AM6/26/02
to
Hallo!

>> #include <string>
>> #include <iostream>
>> #include <list>
>[schnips]
>
>He! Von C++ war nicht die Rede! :-)

Shit! Na ja, kommt davon wenn man nicht genau liest.

Peter Racz

unread,
Jun 26, 2002, 7:04:51 AM6/26/02
to

"pascal lonsmeier" <pasca...@t-online.de> schrieb:
Hallo,

kann mir jemand evtl. nen virtuellen getränkeautomat in c erstellen?

Das passt eher ins www.hausaufgaben.de ?


Michael Schikora

unread,
Jun 26, 2002, 10:19:44 AM6/26/02
to

"pascal lonsmeier" <pasca...@t-online.de> schrieb:

> Hallo,
> kann mir jemand evtl. nen virtuellen getränkeautomat in c erstellen?

Ich habe auch noch einen Code.
Der befindet sich u.a. in dem Automaten bei mir um die Ecke:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <systemabhaengig.h>
#include <geldeinwurf.h>
#include <getraenkeausgabe.h>
/*#include <geldrueckgabe.h>*/

int main()
{
int ZuZahlenCent;
int BezahltCent;
int MengeMilliliter;
int Euro;
int Cent;
srand( (unsigned)time( NULL ) );
do{
BezahltCent = 0;
printf("Bitte wählen:\n1: Cola\t0,2 l\t7.00 EUR\n2: Tass Kaff\t0,2
l\t6.00 EUR\n");
do{
c = SystemabhaengigGetOneSingleKey();
} while( c != '1' && c != '2' );
switch( c )
{
case '1':
ZuZahlenCent = 750; /*Inflation*/
break;
case '2':
ZuZahlenCent= 650; /*Inflation*/
break;
}
do{
Euro = (ZuZahlenCent - BezahltCent)/100;
Cent = (ZuZahlenCent - BezahltCent) - Euro*100;
printf("Noch zu zahlen: %d.%02d\n", Euro,Cent );
BezahltCent += GeltEinwurf();
if( !(rand() % 10) )
BezahltCent = 0;
}while(BezahltCent < ZuZahlenCent);
if( BezahltCent > ZuZahlenCent)
TuSoAlsObRestgeldAusgegebenWurdeBehalteEsAber();
if( (rand() % 10) )
GibBecherAus();
MengeMilliliter = 195 - rand()%50;
GibGetraenkAus( c,MengeMilliliter );
while( 1 ); /* Warum denn kein Geld einsacken, wenn der Automat leer ist?*/
return 0;
}

--
Schiko

FAQ: http://www.mpdvc.de
Samples: http://www.codeproject.com
Samples: http://codeguru.earthweb.com
Privat: http://www.schikos.de/MFC.html


Carsten Witte [MVP]

unread,
Jun 26, 2002, 11:03:56 AM6/26/02
to
Michael Schikora wrote in <afcii2$k3u$01$1...@news.t-online.com>:

>Ich habe auch noch einen Code.
>Der befindet sich u.a. in dem Automaten bei mir um die Ecke:

Unser spezifiziert bei Geldeinwurf noch:

decimal CoinEmUp(EURO eCoin, COUNTRY cFrom)
{
// you lost big time
if ((Random() % 50) == 0)
{
GulpCoin();
return 0.0m;
}

// you lost w/o loss
if ((Random() % 5) == 0)
{
PukeCoin();
return 0.0m;
}

// 20? What? I though the GDR is history?
if (CENT_20 == eCoin)
{
BarfCoin();
return 0.0m;
}

// those freaks ought to be punished
if (BELGIUM == cFrom)
{
CheckWellknownNewgroupsForPorn();

VomitCoin();
return -0.10m;
}

return RealValue(eCoin);
}

Das macht jedes mal Spass. :)

Carsten Witte [MVP]

--
mpdvc-FAQ: http://www.mpdvc.de
Private : http://www.carsti.de/dmfc.html
NewsSuche: http://www.carsti.de/ddeja.html

Ich beantworte keine Fragen, die per e-mail eingehen!

Jens Geyer

unread,
Jun 27, 2002, 4:53:21 AM6/27/02
to
>Ach wie gut das ich heute frei hab, und somit Zeit hab so
>was zu machen ;)


Aaaach sooo?! Na, das trifft sich aber gut ... ich hätte da noch jede Menge
Zeuch zu erledigen, komm' einfach vorbei ...
;-))


PS: Es ist doch immer wieder interessant, was für lange und sinnfreie
Threads durch so kurze Fragen ausgelöst werden können.

PPS: Flames sinnlos, die lese ich morgen eh' nicht.

JensG


0 new messages