Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, helfen Sie mir dieses Programm zum schreiben. Ich bin noch nicht fertig aber es gibt ein Fehler an diese Stelle (:confused:)

Programm

Vereinbaren Sie bitte eine Klasse namens KlasseA und vereinbaren Sie darin die

folgenden Elemente:

1. Ein privates Objektatrribut namens zahl vom Typ int.

2. Ein privates Klassenattribut namens anz vom Typ int.

3. Einen öffentlichen Standardkonstruktor, der das Attribut zahl mit 17 initialisiert und anz

um 1 erhöht.

4. Einen öffentlichen Allgemeinkonstruktor mit einem int-Parameter, der das Attribut zahl

mit seinem Parameter initialisiert und anz um 1 erhöht.

5. Einen öffentlichen Allgemeinkonstruktor mit einem string-Parameter s, der s mit atoi in

einen int-Wert umwandelt, mit dem Ergebnis das Attribut zahl initialisiert und ausserdem

anz um 1 erhöht.

6. Einen öffentlichen Kopierkonstruktor, der das neue Objekt mit demdoppelten Wert des zahl-

Attributs des alten Objekts initialisert und anz um 1 erhöht.

7. Einen öffentlichen Destruktor, der anz um 1 vermindert.

8. Eine öffentliche Objektfunktion namens getZahl, die 0 Parameter hat und den Wert des

Attributs zahl liefert.

9. Eine öffentliche Klassenfunktion namens getAnz, die 0 Parameter hat und den Wert des

Attributs anz liefert.

A4.2 Vereinbaren Sie bitte in derselben Quelldatei eine int main()-Funktion, deren Ausführung

die folgende Ausgabe auf dem Bildschirm erzeugt.

Ausgabe des Programms KlasseA:

KlasseA: Jetzt geht es los!

-----------------------------------

STANDARDkonstruktor, zahl: 17

ALLGEMEINkonstruktor 1, zahl: 23

ALLGEMEINkonstruktor 2, zahl: 10

KOPIERkonstruktor, zahl: 20

-----------------------------------

a1.getZahl() : 17

a2.getZahl() : 23

a3.getZahl() : 10

a4.getZahl() : 20

KlasseA::getAnz(): 4

-----------------------------------

ALLGEMEINkonstruktor 1, zahl: 15

ALLGEMEINkonstruktor 1, zahl: 30

-----------------------------------

a1.getZahl() : 15

a2.getZahl() : 30

-----------------------------------

KlasseA::getAnz(): 6

-----------------------------------

KlasseA::getAnz(): 4

-----------------------------------

KlasseA: Das war's!

was Ich geschrieben habe:

//Datei KlasseA.cpp

#include<string>

#include<iostream>

using namespace std;

//Definition der KlasseA

class KlasseA {

private: //Eigenschaften sind private und damit

// gegen den direkten Zugriff geschuetzt

int zahl;

int anz;

public: //Klassenelemente (Memberfunktionen) müssen public sein sonst

// kann mit der Klasse nicht gearbeitet werden

KlasseA(); //Standardkonstruktor (K1)

KlasseA(int zahl, int anz); //Allgemeinerkonstruktor (K2)

KlasseA(string * s); //Allgemeinerkonstruktor (K3)

KlasseA(KlasseA const & a); //Kopier-Konstruktor (K4)

~KlasseA(); //Destruktor (D)

public: //Objectelemente

string getString(); //get-Methode

void setString(string s); //set-Methode

//Zuweisungs-Operator (=)

KlasseA const & operator = (KlasseA const & zahl);

//Inkrementierungs-Operator (++)

bool operator == (KlasseA const & anz);

private: //Objektelemente sind private und damit

// gegen den direkten Zugriff geschuetzt

string * atoi; //Attribut

//Freunde

//Ausgabeoperator

friend ostream & operator << (ostream & os, KlasseA const & a);

}; //KlasseA

//Definition der Methoden der KlasseA

//StandardKonstruktor (K1)

KlasseA::KlasseA() {

zahl = 17; //zahl initialisiert

anz = anz++; //anz inkrementiert

atoi = new string(" ");

cout <<"K1:" << atoi << endl;

}

//Allgemeinerkonstrucktor (K2)

KlasseA::KlasseA(int zahl, int anz) {

atoi = new string(zahl, anz);

cout <<"k2:" << atoi <<endl;

}

//Allgemeinerkonstruktor (K3)

KlasseA::KlasseA(string * s) {

(:confused:) atoi = new string(s);

cout <<"K3:" << atoi << endl;

}

//Kopier-konstruktor (K4)

KlasseA::KlasseA(KlasseA const & a) {

atoi = new string(*t.atoi);

cout <<"K4:" << atoi << endl;

}

//Destruktor (D)

KlasseA::~KlasseA() {

cout <<"D:" << atoi << endl;

delete atoi;

}

string KlasseA::getString() //get-Methode

return *atoi;

} //getString

void KlasseA::setString(string s) { //set-Methode

*atoi = s;

} //setString

KlasseA const &

KlasseA::operator = KlasseA const & zahl) { //Zuweisungs-Operator(=)

*this->atoi = *zahl.atoi;

return zahl;

} //Operator (=)

bool KlasseA::operator ++ (KlasseA const & anz) { //Inkremntierungs-operator (++)

return *atoi ++ *anz.atoi;

} //Operator (++)

//AusgabeOperator <<

ostream & operator << (ostream & os, KlasseA const & a) {

os << *a.atoi;

return os;

} //Operator <<

//Eine speicherhungrige Prozedur

void machWas() {

KlasseA a1(10*1000*1000, '!'); //10 MB gefüllt mit Ausrufezeichen

cout << '.' << flush; //Ein Punkt '.' wird sofort ausgegeben

} //machWas

/----------------------------------------------------------

//int main() {

cout <<"KlasseA: Jetzt geht's los!" << endl;

Cout <<"STANDARDkonstruktor, zahl:" << endl;

cout <<"ALLGEMEINERkonstruktor 1, zahl:" << endl;

cout <<"ALLGEMEINERkonstruktor 2, zahl:" << endl;

cout <<"KOPIERkonstruktor, zahl:" << endl;

KlasseA a1("zahl:");

KlasseA a2("zahl:");

KlasseA a3("zahl:");

KlasseA a4("zahl:");

cout <<"a1.getZahl():" << a1.getZahl() << endl;

cout <<"a2.getzahl():" << a2.getzahl() << endl;

cout <<"a3.getzahl():" << a2.getZahl() << endl;

cout <<"a4.getZahl():" << a2;getZahl() << endl;

cout <<"KlasseA::getAnz():" << endl;

cout <<"KlasseA : Das war's!" << endl;

}

Geschrieben
Hallo, helfen Sie mir dieses Programm zum schreiben. Ich bin noch nicht fertig aber es gibt ein Fehler an diese Stelle (:confused:)
Du bist nicht nur nicht fertig, du hast auch die Aufgabe falsch verstanden.

  • atoi ist eine Funktion, die du benutzen sollst, um den String in einen int umzuwandeln.
  • Die Ausgaben sollen sicher nicht in main erzeugt werden, sondern durch die Klasse.
  • Der markierte Fehler ist nicht der einzige.
  • Bitte benutz beim nächsten Mal Code-Tags.
  • Bitte stell konkrete Fragen.

Geschrieben


#include<string>

#include<iostream>


using namespace std;



class KlasseA {

private: 

	static int anz;

	int zahl;


public:

	KlasseA(void):zahl(17)

	{

		anz++;

		cout << "Standardkonstruktor, zahl:" << zahl << endl;

	}


	KlasseA(int value):zahl(value)

	{

		anz++;

		cout << "Allgemeinkonstruktor 1, zahl:" << zahl << endl;

	}


	KlasseA(const char* strZahl)

	{

		anz++;

		zahl = atoi(strZahl);

		cout << "Allgemeinkonstruktor 2, zahl:" << zahl << endl;

	}


	KlasseA(const KlasseA& rhs)

	{

		anz++;

		this -> zahl = rhs.zahl << 1;

		cout << "Kopierkonstruktor, zahl:" << zahl << endl;

	}


	~KlasseA()

	{

		anz--;

	}


	int getZahl()

	{

		return zahl;

	}


	static int getAnz()

	{

		return anz;

	}

};


int KlasseA::anz = 0;


int main() {

	cout <<"KlasseA: Jetzt geht's los!" << endl;

	KlasseA a1;

	KlasseA a2(23);

	KlasseA a3("10");

	KlasseA a4(a3);


	cout <<"a1.getZahl():" << a1.getZahl() << endl;

	cout <<"a2.getzahl():" << a2.getZahl() << endl;

	cout <<"a3.getzahl():" << a3.getZahl() << endl;

	cout <<"a4.getZahl():" << a4.getZahl() << endl;

	cout <<"KlasseA::getAnz():" << KlasseA::getAnz() << endl;


	cout <<"KlasseA : Das war's!" << endl;


	cin.get();

	return 0;

}

:floet:

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