Ich muß dieses Semester eine Informatikklausur schreiben und wollte mal eure Meinung zu dieser Musterlösung hören.
Code
#include <iostream>
using namespace std;
class artikel
{
private:
int menge;
char *name;
static int anzahl_artikel;
int art_nr;
public:
void menge_setzen(int);
int menge_aus();
int verkaufen(int verkauf);
void name_ein(char *);
char *name_aus();
int art_nr_aus();
bool operator>(artikel&);
artikel& operator=(artikel&);
artikel();
};
artikel::artikel()
{
name=0x00;
menge=0;
anzahl_artikel++;
art_nr=anzahl_artikel;
}
int artikel::anzahl_artikel=0;
int artikel::art_nr_aus() {return art_nr;};
char *artikel::name_aus()
{
return name;
}
void artikel::name_ein(char *eingabe)
{
int laenge=strlen(eingabe);
if (name!=0x00) delete[] name; // Falls name schon belegt ist
name=new char[laenge+1];
for (int i=0; i<laenge;i++) name[i]=eingabe[i];
name[laenge]=0x00;
}
void artikel::menge_setzen(int wert)
{
if (wert > 0) menge=wert;
else menge=0;
}
int artikel::menge_aus()
{
return menge;
}
int artikel::verkaufen(int verkauf)
{
int rueck;
if (menge > verkauf)
{
menge=menge-verkauf;
rueck=verkauf;
return rueck;
}
else if (menge > 0)
{
rueck=menge;
menge=0;
return rueck;
}
else
{
return 0;
}
}
bool artikel::operator>(artikel &vergleich)
{
if (this->menge > vergleich.menge_aus()) return true;
else return false;
}
artikel& artikel::operator=(artikel &arg2)
{
if (this != &arg2)
{
this->menge_setzen(arg2.menge_aus());
this->name_ein(arg2.name_aus());
this->art_nr=arg2.art_nr_aus();
}
return *this;
}
int main(void)
{
artikel *daten;
int n_artikel, menge;
char name[20];
cout << "Bitte die Anzahl der Artikel eingeben: ";
cin >>n_artikel;
daten=new artikel[n_artikel];
for (int i=0; i<n_artikel;i++)
{
cout << "Bitte Namen eingeben: ";
cin >> name;
cout << "Bitte Menge eingeben: ";
cin >> menge;
daten[i].name_ein(name);
daten[i].menge_setzen(menge);
}
artikel tausch;
for (int i=0; i<n_artikel;i++)
{
for (int j=i+1; j<n_artikel;j++)
{
if (daten[j]>daten[i])
{
tausch=daten[i];
daten[i]=daten[j];
daten[j]=tausch;
}
}
}
for (int i=0; i<n_artikel;i++)
{
cout << daten[i].art_nr_aus()<< " " << daten[i].name_aus() << " " << daten[i].menge_aus()<<endl;
}
return EXIT_SUCCESS;
}
Alles anzeigen
ich finde das ganze für eine Musterlösung doch etwas unübersichtlich, besonders da die Vorlesung nicht für Informatiker sondern für Maschinenbauer ist.