Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

dynamische Speicherverwaltung

Empfohlene Antworten

Veröffentlicht

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

  • Autor

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.

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.