Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Programmierung 2 » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (13): « erste ... « vorherige 2 3 [4] 5 6 nächste » ... letzte » Neues Thema erstellen Thema ist geschlossen
Zum Ende der Seite springen Programmierung 2
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ah jetzt peile ich es .

Ich hätte einfach in der Klasse Cpoint gucken müssen großes Grinsen

public:
/**
* Erzeugt ein neues Objekt mit den angegeben
* Werten f�r die x- und y-Koordinate.
*/
CPoint(int x = 0, int y = 0);
07.09.2017 23:57
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
CRectangle rectangle1; rectangle1.Cpoint(5,5);


So geht das nicht ?

Wie meinst du es genau oben ?
08.09.2017 00:00
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

OMG habe es jetzt großes Grinsen

code:
1:
int main (void) { // TODO: Tragen Sie hier Ihren Namen, die Matrikelnummer und die Rechnernummer ein cout << "Name:, Matrikelnummer: <Matrikelnummer>" << endl << endl; CRectangle rectangle1; CRectangle rectangle1 = CRectangle rectangle1( CPoint(5, 5), CPoint(25, 15)); return 0; }
08.09.2017 00:09
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
int main (void)
{
    // TODO: Tragen Sie hier Ihren Namen, die Matrikelnummer und die Rechnernummer ein
	cout << "Name:, Matrikelnummer: <Matrikelnummer>" << endl << endl;
	CRectangle rectangle1;
	CRectangle rectangle1 = CRectangle rectangle1( CPoint(5, 5), CPoint(25, 15));




	return 0;
}

08.09.2017 00:10
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Mit einem leeren () wird Füllzeichen ausgegeben ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:

int main (void)
{
    // TODO: Tragen Sie hier Ihren Namen, die Matrikelnummer und die Rechnernummer ein
	cout << "Name:, Matrikelnummer: <Matrikelnummer>" << endl ;
	CRectangle rectangle1;
	 CRectangle rectangle1( CPoint(5, 5), CPoint(25, 15));
	 CRectangle rectangle1();




	return 0;
}
08.09.2017 00:17
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nimm einfach Zeile 6
08.09.2017 00:22 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

So z. B.:
code:
1:
2:
3:
4:
5:
int main() {
	CRectangle rect1(CPoint(5, 5), CPoint(25, 15));
	cout << rect1 << endl;
	return 0;
}
08.09.2017 00:23 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Für das Füllzeichem muss ich doch einen anderen Konstruktor aufrufen oder ?

Diesen:

CRectangle::CRectangle(char fillChar)

{
m_fillChar = fillChar;}

Wieso einfach Zeile 6 ?
08.09.2017 00:25
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wenn Du ein Rechteck-Objekt erstellen wolltest, bei dem Du nur das Füllzeichen anders festlegst als der Standard "#", dann könntest Du diesen Konstruktor verwenden.
Aber Du willst doch nur ein Rechteck mit den beiden Ecken konstruieren und nicht eines mit einem Füllzeichen, oder?
08.09.2017 00:28 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe zu erst mal eine frage .

Rufst du da oben in der main diesen Konstruktor auf?

CRectangle::CRectangle(CPoint bottomLeft, CPoint topRight, char fillChar)
{
m_fillChar = fillChar;
m_bottomLeft = bottomLeft;
m_topRight = topRight;

if(topRight.getX() < bottomLeft.getX() ){

m_topRight.CPoint::setX(bottomLeft.getX());
}

if(topRight.getY() < bottomLeft.getY()){

m_topRight.setY(bottomLeft.getY());
}
}


Ich dachte du rufst das hier von der CPOint Klasse auf?
CPoint(int x = 0, int y = 0);

Das muss mir zuerst klar werden ?

Cpoint hat ja kein Füllzeichen oder doch?
08.09.2017 00:32
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

In der Aufgabe steht doch und dem Füllzeichen ?
08.09.2017 00:33
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielleicht nochmal anders:
Wenn Du ein Objekt vom Typ CRectangle machen willst, dann rufst Du dafür den Konstruktor nur einmal auf, und zwar indem Du
code:
1:
CRectangle var_name(Argumente für den Konstruktor);
schreibst. Dabei können die Argumente einem der deklarierten Konstruktoren entsprechen.
Wenn Du das für die Variable var_name einmal gemacht hast, dann verwendest Du nie wieder einen Konstruktor für diese Variable. Die ist ja jetzt schon da, da wird nichts mehr neues dann konstruiert.
Wenn Du was am vorhandenen Objekt var_name später ändern willst (also nicht neu machen sondern ändern!), dann verwendest Du z. B. die setter-Methoden.
Aber bei der g) willst Du nichts an einem Objekt ändern, sondern nur eines erstellen mit den Eckpunkten (5,5) und (25,15) und dem Füllzeichen '#', mehr nicht!
08.09.2017 00:34 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Erstens ist das Füllzeichen schon als Default auf '#' gesetzt und zweitens sollst Du alles drei in einem Objekt haben, sowohl die beiden Eckpunkte als auch das Füllzeichen. Wenn Du explizit ein Füllzeichen angeben willst (was Du hier nicht musst, weil es der Default ist), dann nimm den Konstruktor mit drei Argumenten!
08.09.2017 00:36 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Victor
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ja aber Rectangle hat ja 2 Konstruktoren .

Hast du also das aufgerufen?

CRectangle::CRectangle(CPoint bottomLeft, CPoint topRight, char fillChar)
{
m_fillChar = fillChar;
m_bottomLeft = bottomLeft;
m_topRight = topRight;

if(topRight.getX() < bottomLeft.getX() ){

m_topRight.CPoint::setX(bottomLeft.getX());
}

if(topRight.getY() < bottomLeft.getY()){

m_topRight.setY(bottomLeft.getY());
}
}

Kann ja nicht sein ,da ja dieser Konstruktor keine x und y Koordinate hat ?
08.09.2017 00:37
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 639
Herkunft: Heidelberg

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

x und y??? Nein, x und y ist doch gar kein Member von CRectangle sondern von CPoint! Warum sollte es dann einen Konstruktor mit x und y für das Rechteck geben.

Nochmal: CRectangle hat einen Konstruktor mit zwei CPoint Objekten und einem Char als Füllzeichen. Letzteres ist mit dem "fillChar = '#'" in der Headerdatei auf einen Defaultwert gesetzt.
Wenn Du also nur zwei CPoint in einem Konstruktor angibst, wird automatisch fillChar mit dem Defaultwert belegt. Du hast damit also eigentlich direkt zwei verschiedene Konstruktoren, einen mit zwei CPoint Objekten und einen mit zwei CPoint-Objekten und einem Char.
Außerdem gibt es noch einen eigenen Konstruktor ohne CPoint Objekte aber mit einem (optionalen, weil auch hier ein Default angegeben ist) Füllzeichen.

Ich verwende aber noch den Konstruktor CPoint(x, y), um zwei CPoint-Objekte anzugeben, die ich direkt dem Konstruktor von CRectangle übergebe.
Du könntest auch explizit erst zwei CPoint-Objekte machen und damit das Rechteck konstruieren, etwa so:
code:
1:
2:
3:
4:
5:
6:
7:
int main() {
	CPoint bl(5, 5);
	CPoint tr(25, 15);
	CRectangle rect1(bl, tr);
	cout << rect1 << endl;
	return 0;
}

Vielleicht macht es das klarer?
08.09.2017 00:45 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Seiten (13): « erste ... « vorherige 2 3 [4] 5 6 nächste » ... letzte » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Thema ist geschlossen
Informatiker Board » Themengebiete » Praktische Informatik » Programmierung 2