Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Sers Leute ich hab wiedermal ein Problem^^

soll von meiner Schule aus ein Programm schreiben das einen Muenzspeicher simuliert.

Im Grund genommen hat diesem Programm somit gewisse Schächte um 2 Euro, 1 Euro und 50 Cent Stücke zu speicher. Die Anzahl der Schächte ist nun aber begrenzt.

Außerdem soll der Betrag der momentan im Speicher vorliegt ausgegeben werden.

Mein Programm funktioniert soweit tadellos nur mit der dynamsichen Speicherverwaltung will es nicht.

Der Benutzer soll somit im allg Konstruktor angeben können wieviele Schächte (maxM) im zur Verfügung stehn.

Hier das Programm:

#include <iostream>
#include <conio.h>

using namespace std;

class CMuenzspeicher
{
private:
int maxM;
int anzM2,anzM1,anzM05;
public:
CMuenzspeicher();
CMuenzspeicher(int);
void einwurf(double);
double betrag();
void leeren();
};
//-------------------------Methoden---------------------------------------------
CMuenzspeicher::CMuenzspeicher()
{
maxM=5;
anzM2=0;
anzM1=0;
anzM05=0;
}
/*
CMuenzspeicher::CMuenzspeicher(int max)
{
int *schacht;
schacht=new max;
}
*/
void CMuenzspeicher::einwurf(double wert)
{
if(wert!=2&&wert!=1&&wert!=0.5)
{
cout<<"Es koennen nur 2Euro,1Euro oder 50 Cent(0.5 eingeben) eingeworfen werden!";
}
else
{
if(wert==2)
{
if(anzM2<maxM)
{
anzM2++;
cout<<"2 Euro eingeworfen"<<endl<<endl;
getch();
system("CLS");
}
else
{
cout<<endl<<endl<<"Schacht ist voll!"<<endl<<endl;
getch();
system("CLS");
}
}
else if(wert==1)
{
if(anzM1<maxM)
{
anzM1++;
cout<<"1 Euro eingeworfen"<<endl<<endl;
getch();
system("CLS");
}
else
{
cout<<endl<<endl<<"Schacht ist voll!"<<endl<<endl;
getch();
system("CLS");
}
}
else if(wert==0.5)
{
if(anzM05<maxM)
{
anzM05++;
cout<<"50 Cent eingeworfen"<<endl<<endl;
getch();
system("CLS");
}
else
{
cout<<endl<<endl<<"Schacht ist voll!"<<endl<<endl;
getch();
system("CLS");
}
}
}
}
double CMuenzspeicher::betrag()
{
double erg;
erg=(anzM2*2)+(anzM1*1)+(anzM05*0.5);

return erg;
}
void CMuenzspeicher::leeren()
{
if((anzM2==0)&&(anzM1==0)&&(anzM05==0))
{
cout<<"Speicher ist bereits leer!";
cout<<endl<<endl;
}
else
{
anzM2=0;
anzM1=0;
anzM05=0;
}
getch();
system("CLS");
}
//---------------------------Hauptprogramm--------------------------------------
int main()
{
CMuenzspeicher automat;
int wahl,schacht;
double muenze,betrag;
/*
cout<<"Schachtanzahl eingeben: "
cin>>schacht;
CMuenzspeicher(schacht);
*/
do
{
cout<<"Muenzen einwerfen:\t1";
cout<<endl<<"Betrag anzeigen:\t2";
cout<<endl<<"Muenzschaechte leeren:\t3";
cout<<endl<<"Programmende:\t\t4";
cout<<endl<<endl<<endl<<"Ihre Wahl: ";
cin>>wahl;
if(wahl==1)
{
cout<<"Werfen sie eine Muenze ein: ";
cin>>muenze;
automat.einwurf(muenze);
}
if(wahl==2)
{
betrag=automat.betrag();
cout<<endl<<"Aktueller Betrag: "<<betrag;
getch();
system("CLS");
}
if(wahl==3)
{
automat.leeren();
}
}while(wahl!=4);

getch();
return 0;
}







[/PHP]

Die Problemstelle habe ich auskommentiert.

Bitte um hilfe :bimei

Geschrieben

Es gibt bei diesem Programm aber keine sinnvolle Anwendung für dynamische Speicherverwaltung. Du brauchst doch nicht mehr Variablen, wenn du größere Schächte brauchst. Oder meinst du mehr Schächte?

Geschrieben

Der benutzer soll angeben wieviele Schächter der Automat haben soll. Dieser Wert soll dynamisch an maxM gegeben werden. Ob das sinnvoll ist oder nicht sei ja nun mal in der Raum gestellt ist ja nur ne reine Übung.

Aber die Anzahl der maximalen Schächte soll nicht statisch sein, wie sie momentan in meinem Programm sind, sondern es soll am Anfang des Programmes eine Abfrage passieren und damit soll maxM belegt werden.

Geschrieben
Der benutzer soll angeben wieviele Schächter der Automat haben soll. Dieser Wert soll dynamisch an maxM gegeben werden.
Dir ist aber klar, dass dein Programm momentan maxM nicht für die Anzahl der Schächte benutzt, sondern für die Größe?

Letzlich musst du deine anz-Variablen durch ein einziges, dynamisches int-Array ersetzen. Weitere Arrays für die Münzwerte und -namen wäre wohl auch nicht schlecht. Und du solltest dringend von Fließkommatypen weg. 0.5 mag ja noch ohne Rundungsfehler in einen double passen, aber 0.2 oder 0.1 tut es nicht mehr. Fließkommatypen sollte man übrigens grundsätzlich nicht auf Gleichheit prüfen. Rechne besser komplett in Cent, dann kannst du ganzzahlige Variablen benutzen.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...