Zum Inhalt springen

dynamische Speicherverwaltung


Freeed91

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...