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): [1] 2 3 nächste » ... letzte » Neues Thema erstellen Thema ist geschlossen
Zum Ende der Seite springen Programmierung 2
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
expertealiasVictor
unregistriert
Programmierung 2 Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo alle zusammen bin gerade an einer neuen Aufgabe tran.
Es soll eine Klasse CRectangle implementiert werden, die ein Rechteck modelliert. Das Rechteck wird
durch die Eigenschaften „linke untere Ecke“, „rechte obere Ecke“ und ein „Füllzeichen“ beschrieben, das
später für die graphische Darstellung (s. u.) verwendet wird. Die Klasse CPoint zur Repräsentation
einer Koordinate ist bereits vorgegeben. Verändern Sie den Quellcode dieser Klasse nicht! Die
Klassendefinition der Klasse CRectangle ist ebenfalls bereits vorgegeben. Beachten Sie die Hinweise
in den Kommentaren der Klassendefinition.


Mir werden Fehler beim ersten Konstruktor angezeigt .

Habe gedacht ,dass ich erstmal nachfrage und versuche den Fehler zu beseitigen :

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
#ifndef ASCIISCREENSOLUTION_MYCODE_CRECTANGLE_H_
#define ASCIISCREENSOLUTION_MYCODE_CRECTANGLE_H_

#include <ostream>
using namespace std;

#include "CPoint.h"
#include "CScreen.h"

/**
 * Diese Klasse beschreibt ein Rechteck in einem
 * Ganzzahl-Koordinatensystem &#65533;ber die Eigenschaften
 * "untere linke Ecke" und "obere rechte Ecke".
 *
 * Als zus&#65533;tzliche Eigenschaft hat die Klasse ein Zeichen
 * (char) das bei der graphischen Darstellung als
 * F&#65533;llzeichen verwendet wird.
 */
class CRectangle
{
private:
	/** Die linke untere Ecke. */
	CPoint m_bottomLeft;
	/** Die rechte obere Ecke. */
	CPoint m_topRight;
	/** Das F&#65533;llzeichen f&#65533;r die graphische Darstellung. */
	char m_fillChar;

public:
	/**
	 * Erzeugt ein neues Rechteck mit linker unterer und
	 * rechter oberer Ecke bei (0,0) und dem angegebenen
	 * F&#65533;llzeichen.
	 */
	CRectangle(char fillChar = '#');

	/**
	 * Erzeugt ein neues Rechteck mit der angegebenen linken
	 * unteren und rechten oberen Ecken sowie dem angegebenen
	 * F&#65533;llzeichen.
	 *
	 * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
	 * rechte obere Ecke rechts von und oberhalt der linken
	 * unteren Ecke liegen muss! Falls die x-Koordinate
	 * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
	 * der linken unteren Ecke ist, wird sie auf den Wert
	 * der x-Koordinate der linken unteren Ecke gesetzt. Falls
	 * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
	 * die y-Koordinate der linken unteren Ecke ist, wird sie auf
	 * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
	 */
	CRectangle(CPoint bottomLeft, CPoint topRight, char fillChar = '#');

	/**
	 * Weist den Eigenschaften "linke untere Ecke" und "rechte obere
	 * Ecke" neue Werte zu.
	 *
	 * Vor der Zuweisung wird die Zusicherung &#65533;berpr&#65533;ft, dass die
	 * rechte obere Ecke rechts von und oberhalt der linken
	 * unteren Ecke liegen muss! Ist das nicht der Fall wird keines
	 * der Attribute ver&#65533;ndert.
	 */
	void setCorners (CPoint bottomLeft, CPoint topRight);

	/**
	 * Liefert die linke untere Ecke des Rechtecks zur&#65533;ck.
	 */
	CPoint getBottomLeftCorner() const;

	/**
	 * Liefert die rechte obere Ecke des Rechtecks zur&#65533;ck.
	 */
	CPoint getTopRightCorner() const;

	/**
	 * Weist dem F&#65533;llzeichen den angegebene Wert zu.
	 */
	void setFillChar(char fillChar = '#');

	/**
	 * Liefert den Wert des F&#65533;llzeichens.
	 */
	char getFillChar() const;

	/**
	 * Pr&#65533;ft, ob die beiden Rechtecke in allen Eigenschaften &#65533;bereinstimmen.
	 */
	bool operator== (const CRectangle& other) const;

	/**
	 * Zeichnet das Rechteck in das &#65533;bergebene Bildschirmobjekt. Das heisst,
	 * es werden mit CScreen::setPoint die Werte aller "Punkte", die im 
	 * Bereich des Rechtecks liegen, auf das F&#65533;llzeichen des Rechtecks gesetzt.
	 */
	void draw(CScreen& screen) const;

	/**
	 * Gibt eine textuelle Darstellung des Rechtecks auf dem &#65533;bergebenen
	 * Ausgabestrom aus. Das Format ist in der Aufgabenstellung beschrieben.
	 */
	friend ostream& operator<< (ostream& lhs, const CRectangle& rhs);
};

#endif /* ASCIISCREENSOLUTION_MYCODE_CRECTANGLE_H_ */




cpp




code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:


#include "CRectangle.h"

CRectangle::CRectangle(char fillChar)
{
	m_fillChar = fillChar;
	/**
		 * Erzeugt ein neues Rechteck mit der angegebenen linken
		 * unteren und rechten oberen Ecken sowie dem angegebenen
		 * F&#65533;llzeichen.
		 *
		 * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
		 * rechte obere Ecke rechts von und oberhalt der linken
		 * unteren Ecke liegen muss! Falls die x-Koordinate
		 * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
		 * der linken unteren Ecke ist, wird sie auf den Wert
		 * der x-Koordinate der linken unteren Ecke gesetzt. Falls
		 * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
		 * die y-Koordinate der linken unteren Ecke ist, wird sie auf
		 * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
		 */
	if(x_topRight < x_bottomLeft ){
		
		x_topRight = x_bottomLeft;
	}
	
	if(y_topRight < y_bottomLeft){
		
		y_topRight = y_bottomLeft;
	}
}

CRectangle::CRectangle(CPoint bottomLeft, CPoint topRight, char fillChar)
{
	// Bitte implementieren
	
}

void CRectangle::setCorners(CPoint bottomLeft, CPoint topRight)
{
	// Bitte implementieren
}

CPoint CRectangle::getBottomLeftCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

CPoint CRectangle::getTopRightCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

void CRectangle::setFillChar(char fillChar)
{
	// Bitte implementieren
}

char CRectangle::getFillChar() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return 0;
}

bool CRectangle::operator ==(const CRectangle& other) const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return false;
}

void CRectangle::draw(CScreen& screen) const
{
	// Bitte implementieren
}



Description Resource Path Location Type
Symbol 'x_bottomLeft' could not be resolved CRectangle.cpp /CRectangle line 30 Semantic Error
Symbol 'x_topRight' could not be resolved CRectangle.cpp /CRectangle line 30 Semantic Error
Symbol 'y_topRight' could not be resolved CRectangle.cpp /CRectangle line 35 Semantic Error
Symbol 'y_topRight' could not be resolved CRectangle.cpp /CRectangle line 33 Semantic Error
Symbol 'y_bottomLeft' could not be resolved CRectangle.cpp /CRectangle line 33 Semantic Error
Symbol 'y_bottomLeft' could not be resolved CRectangle.cpp /CRectangle line 35 Semantic Error
Member 'm_fillChar' was not initialized in this constructor CRectangle.cpp /CRectangle line 39 Code Analysis Problem
Symbol 'x_bottomLeft' could not be resolved CRectangle.cpp /CRectangle line 28 Semantic Error
Symbol 'x_topRight' could not be resolved CRectangle.cpp /CRectangle line 28 Semantic Error


Sind meine Zusicherungen falsch oder wie ?

expertealiasVictor hat dieses Bild (verkleinerte Version) angehängt:
c.png

30.08.2017 15:53
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

Ich kenne zwar die CPOINT Klasse nicht, aber auf ein Member eines Object greifst Du mit Objekt-Name dann ein Punkt und dann das Member zu. Was soll denn x_topRight sein? Du meinst eventuell topRight.x oder?

Gruß
Marco
31.08.2017 00:43 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

Du bist außerdem im falschen Konstruktor. Dieser bekommt ja gar keine Ecken übergeben. Wieso willst Du dann etwas überprüfen, das Du gar nicht hast. Der nächste Konstruktor bekommt allerdings die Eckpunkte übergeben, da musst Du überprüfen, dannaber den Member variablen zuweisen, nicht den übergebenen.

Gruß
Marco
31.08.2017 00:49 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

Aber in der Header steht doch das man die Zusicherungen im 1 konstruktor benutzen muss ?
Cpoint
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
#ifndef ASCIISCREENSOLUTION_MYCODE_CPOINT_H_
#define ASCIISCREENSOLUTION_MYCODE_CPOINT_H_

/**
 * Diese Klasse repr&#65533;sentiert einen Punkt ein einem Ganzzahl-Koordinatensystem.
 */
class CPoint
{
private:
  /** Die x-Koordinate (Spalte) */
  int m_x;
  /** Die y-Koordinate (Zeile) */
  int m_y;

public:
  /**
   * Erzeugt ein neues Objekt mit den angegeben
   * Werten f&#65533;r die x- und y-Koordinate.
   */
  CPoint(int x = 0, int y = 0);

  /**
   * Setzt die x-Koordinate auf den angegebenen Wert.
   */
  void setX(int x);

  /**
   * Setzt die y-Koordinate auf den angegebenen Wert.
   */
  void setY(int y);

  /**
   * Liefert den Wert der x-Koordinate.
   */
  int getX() const;

  /**
   * Liefert den Wert der y-Koordinate.
   */
  int getY() const;

  /**
   * Pr&#65533;ft, ob die x- und y-Koordinaten der Punkte &#65533;bereinstimmen.
   */
  bool operator== (const CPoint& other) const;

  /**
   * Pr&#65533;ft, ob sich die x- und y-Koordinaten der Punkte unterscheiden.
   */
  bool operator!= (const CPoint& other) const;
};

#endif /* ASCIISCREENSOLUTION_MYCODE_CPOINT_H_ */





code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
#include "CPoint.h"

CPoint::CPoint(int x, int y)
{
  m_x = x;
  m_y = y;
}

void CPoint::setX(int x)
{
  m_x = x;
}

void CPoint::setY(int y)
{
  m_y = y;
}

int CPoint::getX() const
{
  return m_x;
}

int CPoint::getY() const
{
  return m_y;
}

bool CPoint::operator ==(const CPoint& other) const
{
  return m_x == other.m_x && m_y == other.m_y;
}

bool CPoint::operator !=(const CPoint& other) const
{
  return m_x != other.m_x || m_y != other.m_y;
}



Aber nach dem define sind meine Fehler immer noch nicht weg ?


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:

#include "CRectangle.h"
#define x_bottomLeft m_bottomLeft.x
#define y_bottomLeft m_bottomLeft.y
#define x_topRight m_topRight.x
#define y_topRight m_topRight.y
CRectangle::CRectangle(char fillChar)

{
  m_fillChar = fillChar;
  /**
     * Erzeugt ein neues Rechteck mit der angegebenen linken
     * unteren und rechten oberen Ecken sowie dem angegebenen
     * F&#65533;llzeichen.
     *
     * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
     * rechte obere Ecke rechts von und oberhalt der linken
     * unteren Ecke liegen muss! Falls die x-Koordinate
     * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
     * der linken unteren Ecke ist, wird sie auf den Wert
     * der x-Koordinate der linken unteren Ecke gesetzt. Falls
     * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
     * die y-Koordinate der linken unteren Ecke ist, wird sie auf
     * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
     */
  if(topRight.x < bottomLeft.x ){

    m_topRight.x = bottomLeft.x;
  }

  if(topRight.y < bottomLeft.y){

    m_topRight.y = bottomLeft.y;
  }
}

CRectangle::CRectangle(CPoint bottomLeft, CPoint topRight, char fillChar)
{
  // Bitte implementieren

}

void CRectangle::setCorners(CPoint bottomLeft, CPoint topRight)
{
  // Bitte implementieren
}

CPoint CRectangle::getBottomLeftCorner() const
{
  // Bitte implementieren und dabei das return-Statement ersetzen.
  return CPoint();
}

CPoint CRectangle::getTopRightCorner() const
{
  // Bitte implementieren und dabei das return-Statement ersetzen.
  return CPoint();
}

void CRectangle::setFillChar(char fillChar)
{
  // Bitte implementieren
}

char CRectangle::getFillChar() const
{
  // Bitte implementieren und dabei das return-Statement ersetzen.
  return 0;
}

bool CRectangle::operator ==(const CRectangle& other) const
{
  // Bitte implementieren und dabei das return-Statement ersetzen.
  return false;
}

void CRectangle::draw(CScreen& screen) const
{
  // Bitte implementieren
}


Fehler

Description Resource Path Location Type
Symbol 'topRight' could not be resolved CRectangle.cpp /CRectangle
line 37 Semantic Error
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 34
Semantic Error
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 37
Semantic Error
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 37
Semantic Error
Symbol 'bottomLeft' could not be resolved CRectangle.cpp /CRectangle
line 39 Semantic Error
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 39
Semantic Error
Symbol 'bottomLeft' could not be resolved CRectangle.cpp /CRectangle
line 37 Semantic Error
make: *** [CRectangle.o] Fehler 1 CRectangle C/C++ Problem
Symbol 'topRight' could not be resolved CRectangle.cpp /CRectangle
line 32 Semantic Error
Member 'm_fillChar' was not initialized in this constructor
CRectangle.cpp /CRectangle line 43 Code Analysis Problem
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 39
Semantic Error
‘x_bottomLeft’ was not declared in this scope CRectangle.cpp
/CRectangle line 28 C/C++ Problem
‘x_topRight’ was not declared in this scope CRectangle.cpp /CRectangle
line 28 C/C++ Problem
‘y_bottomLeft’ was not declared in this scope CRectangle.cpp
/CRectangle line 33 C/C++ Problem
‘y_topRight’ was not declared in this scope CRectangle.cpp /CRectangle
line 33 C/C++ Problem
die Regel für Ziel „CRectangle.o“ scheiterte subdir.mk
/CRectangle/Debug line 27 C/C++ Problem
Symbol 'bottomLeft' could not be resolved CRectangle.cpp /CRectangle
line 32 Semantic Error
Symbol 'bottomLeft' could not be resolved CRectangle.cpp /CRectangle
line 34 Semantic Error
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 32
Semantic Error
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 34
Semantic Error
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 32
Semantic Error
01.09.2017 00:17
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

Ne Idee?
03.09.2017 01:18
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

Naja, was soll ich sagen, was ich nicht schon längst gesagt hatte? Es gibt in diesem Konstruktor nunmal weder eine Variable topRight noch bottomLeft. Du versuchst darauf zuzugreifen, bekommst einen Fehler, glaubst mir aber nicht, dass das daran liegt.
Schonmal überlegt, ob Du vielleicht die Aufgabenstellung falsch verstanden hast? Ich kann Dir nur soviel sagen: in einem Konstruktor etwas zu überprüfen, was dieser konkrete Konstruktor gar nicht übergeben bekommt, ist nicht nur logisch sinnlos sondern auch technisch nicht möglich. Das sollte eigentlich jedem einleuchten, egal ob man programmieren kann oder nicht...

Gruß
Marco
03.09.2017 11:29 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

Ich habe gerade nochmal die Aufgabe angeschaut. Bei der b) steht ganz explizit, dass man die Zusicherung bei dem Konstruktor mit drei Argumenten machen soll. Wo Du das rein geschrieben hast hat der Konstruktor aber nur eines. Du musst auch mal aufmerksam die Texte lesen, sowohl die Aufgabentexte als auch die von mir. Habe häufig den Eindruck, dass Du das nicht für besonders wichtig hältst.

Gruß
Marco
03.09.2017 11: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
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

Passt jetzt der Konstruktor wenigstens ?
Aber die Fehler sind leider immer noch da großes Grinsen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
#include "CRectangle.h"

CRectangle::CRectangle(char fillChar)

{
  m_fillChar = fillChar;
  /**
     * Erzeugt ein neues Rechteck mit der angegebenen linken
     * unteren und rechten oberen Ecken sowie dem angegebenen
     * F&#65533;llzeichen.
     *
     * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
     * rechte obere Ecke rechts von und oberhalt der linken
     * unteren Ecke liegen muss! Falls die x-Koordinate
     * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
     * der linken unteren Ecke ist, wird sie auf den Wert
     * der x-Koordinate der linken unteren Ecke gesetzt. Falls
     * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
     * die y-Koordinate der linken unteren Ecke ist, wird sie auf
     * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
     */
  
}

CRectangle::CRectangle(CPoint bottomLeft, CPoint topRight, char fillChar)
{
	if( topRight.x <=bottomLeft.x && topRight.y<= bottomLeft.y){
			
			m_bottomLeft = bottomLeft;
			m_topRight = topRight;
		}
}

void CRectangle::setCorners(CPoint bottomLeft, CPoint topRight)
{
	// Bitte implementieren
}

CPoint CRectangle::getBottomLeftCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

CPoint CRectangle::getTopRightCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

void CRectangle::setFillChar(char fillChar)
{
	// Bitte implementieren
}

char CRectangle::getFillChar() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return 0;
}

bool CRectangle::operator ==(const CRectangle& other) const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return false;
}

void CRectangle::draw(CScreen& screen) const
{
	// Bitte implementieren
}

04.09.2017 15:29
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

Du musst schon die Bedingungen einzeln überprüfen für jede Koordinate. Du hattest das im Prinzip schon richtig.
So würde ja, wenn nur eine Koordinate verkehrt ist, dass dann gar nichts "korrigiert" wird. Du willst aber jede Koordinate einzeln betrachten und zurecht rücken (so die Beschreibung zumindest),

Gruß
Marco

PS: komipierts so zumindest schon mal?
04.09.2017 20:10 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

Ok habe jetzt den Konstruktor wieder geändert .

Leider gibt es zu viele Fehlermeldungen und ich verstehe nicht wie ich die weg bekomme?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:

* CRectangle.cpp
 *
 *  Created on: 05.02.2015
 *      Author: lipp
 */

#include "CRectangle.h"

CRectangle::CRectangle(char fillChar)

{
  m_fillChar = fillChar;
  /**
     * Erzeugt ein neues Rechteck mit der angegebenen linken
     * unteren und rechten oberen Ecken sowie dem angegebenen
     * F&#65533;llzeichen.
     *
     * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
     * rechte obere Ecke rechts von und oberhalt der linken
     * unteren Ecke liegen muss! Falls die x-Koordinate
     * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
     * der linken unteren Ecke ist, wird sie auf den Wert
     * der x-Koordinate der linken unteren Ecke gesetzt. Falls
     * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
     * die y-Koordinate der linken unteren Ecke ist, wird sie auf
     * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
     */

}

CRectangle::CRectangle(CPoint bottomLeft, CPoint topRight, char fillChar)
{
	 if(topRight.x < bottomLeft.x ){

	    m_topRight.x = bottomLeft.x;
	  }

	  if(topRight.y < bottomLeft.y){

	    m_topRight.y = bottomLeft.y;
	  }
}

void CRectangle::setCorners(CPoint bottomLeft, CPoint topRight)
{
	// Bitte implementieren
}

CPoint CRectangle::getBottomLeftCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

CPoint CRectangle::getTopRightCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

void CRectangle::setFillChar(char fillChar)
{
	// Bitte implementieren
}

char CRectangle::getFillChar() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return 0;
}

bool CRectangle::operator ==(const CRectangle& other) const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return false;
}

void CRectangle::draw(CScreen& screen) const
{
	// Bitte implementieren
}





Description Resource Path Location Type
Member 'm_fillChar' was not initialized in this constructor CRectangle.cpp /CRectangle line 32 Code Analysis Problem
make: *** [CRectangle.o] Fehler 1 CRectangle C/C++ Problem
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 34 Semantic Error
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 36 Semantic Error
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 34 Semantic Error
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 39 Semantic Error
Field 'x' could not be resolved CRectangle.cpp /CRectangle line 36 Semantic Error
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 41 Semantic Error
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 39 Semantic Error
‘class CPoint’ has no member named ‘x’ CRectangle.cpp /CRectangle line 34 C/C++ Problem
Field 'y' could not be resolved CRectangle.cpp /CRectangle line 41 Semantic Error
‘class CPoint’ has no member named ‘y’ CRectangle.cpp /CRectangle line 34 C/C++ Problem
die Regel für Ziel „CRectangle.o“ scheiterte subdir.mk /CRectangle/Debug line 27 C/C++ Problem
04.09.2017 20:41
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

Ja, CPoint hat ja auch kein x und y, sondern m_x und m_y. Die sind aber private, da kommst Du also von außen gar nicht dran.
Du musst deshalb mit den getX/Y() und setX/Y()- Methoden auf die Variablen zugreifen.
Außerdem musst Du die Zeile m_fillChar = fillChar; auch in den zweiten Konstruktor schreiben.

Gruß
Marco
04.09.2017 23:55 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

Jetzt passt es ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:

* CRectangle.cpp
 *
 *  Created on: 05.02.2015
 *      Author: lipp
 */

#include "CRectangle.h"
#include "CPoint.h"
CRectangle::CRectangle(char fillChar)

{
  m_fillChar = fillChar;
  /**
     * Erzeugt ein neues Rechteck mit der angegebenen linken
     * unteren und rechten oberen Ecken sowie dem angegebenen
     * F&#65533;llzeichen.
     *
     * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
     * rechte obere Ecke rechts von und oberhalt der linken
     * unteren Ecke liegen muss! Falls die x-Koordinate
     * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
     * der linken unteren Ecke ist, wird sie auf den Wert
     * der x-Koordinate der linken unteren Ecke gesetzt. Falls
     * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
     * die y-Koordinate der linken unteren Ecke ist, wird sie auf
     * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
     */

}

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

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

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

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

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

void CRectangle::setCorners(CPoint bottomLeft, CPoint topRight)
{
	// Bitte implementieren
}

CPoint CRectangle::getBottomLeftCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

CPoint CRectangle::getTopRightCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

void CRectangle::setFillChar(char fillChar)
{
	// Bitte implementieren
}

char CRectangle::getFillChar() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return 0;
}

bool CRectangle::operator ==(const CRectangle& other) const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return false;
}

void CRectangle::draw(CScreen& screen) const
{
	// Bitte implementieren
}


05.09.2017 00:55
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

Eine Member Funktion rufst Du auf, indem Du nur Objekt-Punkt-Methode schreibst.
Du musst also z. B. topRight.getX () schreiben.
Außerdem musst Du irgendwie im Konstruktor alle vier Koordinatenwerte immer setzen. Du setzt ja jetzt nur x und y von topRight und nur dann, wenn eine der Zusicherungen nicht schon vorher erfüllt war.

Du musst also vorher m_topRight und m_bottomLeft vorher noch die übergebenen topRight und bottomLeft zuweisen, damit die Koordinatenwerte kopiert werden, bevor Du die Korrektur für die Zusicherung machst.

Gruß
Marco
05.09.2017 08:06 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

Jetzt scheint es auch ohne das CPoint:: keine Fehler anzuzeigen .

Komisch .


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:

#include "CRectangle.h"
#include "CPoint.h"
CRectangle::CRectangle(char fillChar)

{
  m_fillChar = fillChar;
  /**
     * Erzeugt ein neues Rechteck mit der angegebenen linken
     * unteren und rechten oberen Ecken sowie dem angegebenen
     * F&#65533;llzeichen.
     *
     * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
     * rechte obere Ecke rechts von und oberhalt der linken
     * unteren Ecke liegen muss! Falls die x-Koordinate
     * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
     * der linken unteren Ecke ist, wird sie auf den Wert
     * der x-Koordinate der linken unteren Ecke gesetzt. Falls
     * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
     * die y-Koordinate der linken unteren Ecke ist, wird sie auf
     * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
     */

}

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());
	  }
}

void CRectangle::setCorners(CPoint bottomLeft, CPoint topRight)
{
	// Bitte implementieren
}

CPoint CRectangle::getBottomLeftCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

CPoint CRectangle::getTopRightCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return CPoint();
}

void CRectangle::setFillChar(char fillChar)
{
	// Bitte implementieren
}

char CRectangle::getFillChar() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return 0;
}

bool CRectangle::operator ==(const CRectangle& other) const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return false;
}

void CRectangle::draw(CScreen& screen) const
{
	// Bitte implementieren
}





Hoffe jetzt ok?
05.09.2017 09:22
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

Habe mittlerweile auch die getter und setter Methode implementiert , kannst du bitte auf Fehler gucken ?

Aber Compiler Fehlermeldungen habe ich schon mal keine. großes Grinsen


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:

/*
 * CRectangle.cpp
 *
 *  Created on: 05.02.2015
 *      Author: lipp
 */

#include "CRectangle.h"
#include "CPoint.h"
CRectangle::CRectangle(char fillChar)

{
  m_fillChar = fillChar;
  /**
     * Erzeugt ein neues Rechteck mit der angegebenen linken
     * unteren und rechten oberen Ecken sowie dem angegebenen
     * F&#65533;llzeichen.
     *
     * Beim Erzeugen wird die Zusicherung &#65533;berpr&#65533;ft, dass die
     * rechte obere Ecke rechts von und oberhalt der linken
     * unteren Ecke liegen muss! Falls die x-Koordinate
     * der rechten oberen Ecke nicht gr&#65533;&#65533;er als die x-Koordinate
     * der linken unteren Ecke ist, wird sie auf den Wert
     * der x-Koordinate der linken unteren Ecke gesetzt. Falls
     * die y-Koordinate der rechten oberen Ecke nicht gr&#65533;&#65533;er als
     * die y-Koordinate der linken unteren Ecke ist, wird sie auf
     * dem Wert der y-Koordinate der linken unteren Ecke gesetzt.
     */

}

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());
	  }
}


void CRectangle::setCorners(CPoint bottomLeft, CPoint topRight)
{
	if(topRight.getX()> bottomLeft.getX() && topRight.getY()> bottomLeft.getY()){
		
		m_bottomLeft = bottomLeft;
		m_topRight = topRight;
	}
}

CPoint CRectangle::getBottomLeftCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return m_bottomLeft;
}

CPoint CRectangle::getTopRightCorner() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return m_topRight;
}

void CRectangle::setFillChar(char fillChar)
{
	// Bitte implementieren
	m_fillChar = fillChar;
}

char CRectangle::getFillChar() const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return m_fillChar;
}

bool CRectangle::operator ==(const CRectangle& other) const
{
	// Bitte implementieren und dabei das return-Statement ersetzen.
	return false;
}

void CRectangle::draw(CScreen& screen) const
{
	// Bitte implementieren
}

05.09.2017 09:48
Seiten (13): [1] 2 3 nächste » ... letzte » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Thema ist geschlossen
Informatiker Board » Themengebiete » Praktische Informatik » Programmierung 2