Konstruktor



  • Gast12 schrieb:

    Sagen wir mal so .
    Ich übe ja an dieser Aufgabe.
    Ist es das was der Aufgabensteller erwartet ? 😃

    Kling halbwegs so. Wäre etwas einfacher zu beurteilen, wenn du kaputte Sonderzeichen in der kopierten Aufgabenbeschreibung korrigiert hättest.

    Als kleiner mathematischer Tipp

    \neg(x < y) \not\equiv x>y



  • Ist die Zusicherung von meiner Setter Methode richtig ?



  • Dann nochmal ausgeschrieben. In dem Text steht "nicht größer" du testes anders herum auf kleiner. Wenn man es ganz genau nimmt, müsste dann der Vergleich auf kleiner gleich lauten.

    Da bei Erfüllung der Bedingung aber der eine Wert der entsprechenden Variablen zugewiesen wird, macht das in diesem Fall keinen Unterschied im Ergebnis.



  • Implementieren Sie den operator<<. Die Ausgabe soll das Format
    CRectangle[(<blX>, <blY>), (<trX>, <trY>), '<fillChar>']
    (ohne abschließendem Zeilenumbruch) haben. Dabei steht „<blX>“ für „bottom left X(-
    Koordinate)“ („<trY>“ entsprechend für „top right Y(-Koordinate)“). Für ein Rechteck mit
    linker unterer Ecke bei (1,2) und oberer rechter Ecke bei (3,4) und Füllzeichen '#' ergäbe
    sich also:
    CRectangle[(1,2), (3,4), '#']

    Vor allem beim letzten Teil mit fillchar bin ich mir nicht sicher ?

    ostream& operator<< (ostream& lhs, const CRectangle& rhs){
    	lhs << "CRectangle[(" << rhs.getBottomLeftCorner().getX() << "," << " " << rhs.getBottomLeftCorner().getY() << ")" << "," << "(" << rhs.getTopRightCorner().getX() << " , "<< rhs.getTopRightCorner().getY()<< " )"<< ","<< rhs.getFillChar()<< endl;
    
    return lhs;
    }
    

    Fehler:

    Description Resource Path Location Type
    ‘const class CRectangle’ has no member named ‘fillChar’; did you mean ‘m_fillChar’? CRectangle.cpp /CRectangle line 94 C/C++ Problem
    ‘const class CRectangle’ has no member named ‘topRight’; did you mean ‘m_topRight’? CRectangle.cpp /CRectangle line 94 C/C++ Problem
    expected ‘)’ before ‘;’ token CRectangle.cpp /CRectangle line 94 C/C++ Problem
    die Regel für Ziel „CRectangle.o“ scheiterte subdir.mk /CRectangle/Debug line 27 C/C++ Problem
    make: *** [CRectangle.o] Fehler 1 CRectangle C/C++ Problem
    expected primary-expression before ‘.’ token CRectangle.cpp /CRectangle line 94 C/C++ Problem
    ‘const class CRectangle’ has no member named ‘bottomLeft’; did you mean ‘m_bottomLeft’? CRectangle.cpp /CRectangle line 94 C/C++ Problem

    Ist meine Idee total falsch oder nicht so blöd wie ich denke ?



  • Die Fehlermeldung passt nicht zu deinem Code. Gleich die erste macht das deutlich:

    ‘const class CRectangle’ has no member named ‘fillChar’; did you mean ‘m_fillChar’? CRectangle.cpp /CRectangle line 94 C/C++ Problem

    In deinem Code benutzt du aber fillChar gar nicht, sondern rufst getFillChar auf. Das passt also nicht zusammen.

    Außerdem steht in der Aufgabe explizit "ohne abschließendem Zeilenumbruch" drin. Du schreibst aber endl in den Stream.

    Ach ja, cout << "H" << "a" << "l" << "l" << "o"; kannst du einfacher schreiben: cout << "Hallo"; , das gilt auch für << ")" << "," << "(" ... dann fiele dir vielleicht auch auf, dass im Beispiel nicht "),(" steht, sondern "), (". Und das schließende "]" fehlt dir auch sowie die ' um das FillChar.

    Die Frage ist also eher, wobei bist du dir nicht sicher - und warum nicht?



  • Erzeugen Sie in main.cpp ein Rechteck rectangle1 mit der linken unteren Ecke (5,5)
    und der rechten oberen Ecke (25,15) und dem Füllzeichen '#'. Geben Sie das Rechteck
    unter Verwendung von operator<< auf der Konsole aus.

    Meine main sieht so aus :

    / GIT-Labor
    // main.h
    
    ////////////////////////////////////////////////////////////////////////////////
    // Header-Dateien
    #include <iostream>		// Header f�r die Standard-IO-Objekte (z.B. cout, cin)
    #include <stdlib.h>
    // TODO: F�gen Sie hier weitere ben�tigte Header-Dateien der
    // Standard-Bibliothek ein z.B.
    // #include <string>
    
    using namespace std;	// Erspart den scope vor Objekte der
    						// C++-Standard-Bibliothek zu schreiben
    						// z.B. statt "std::cout" kann man "cout" schreiben
    
    // Inkludieren Sie hier die Header-Files Ihrer Klassen, z.B.
    // #include "CFraction.h"
    #include "CPoint.h"
    #include "CRectangle.h"
    #include "CScreen.h"
    
    // Hauptprogramm
    // Dient als Testrahmen, von hier aus werden die Klassen aufgerufen
    int main (void)
    {
        // TODO: Tragen Sie hier Ihren Namen, die Matrikelnummer und die Rechnernummer ein
    	cout << "Name:, Matrikelnummer: <Matrikelnummer>" << endl << endl;
    
    	CRectangle rectangle1.getBottomLeftCorner().getX(5).getY(5);
    	CRectangle rectangle1.getTopRightCorner().getX(25).getY(15);
    	CRectangle rectangle.getFillChar(´fillChar´);
    
    	return 0;
    }
    

    Ich verstehe allerdings in diesem Fall die Aufgabenstellung nicht .

    Ich übe eigentlich nur an der Aufgabe ,aber trotzdem .

    Was soll ich den genau mit operator << ausgeben ?
    Ich verstehe das ehrlich gesagt gar nicht .
    Was wollen die von mir ?



  • Passt das ?



  • int main (void)
    {
        // TODO: Tragen Sie hier Ihren Namen, die Matrikelnummer und die Rechnernummer ein
    	cout << "Name:, Matrikelnummer: <Matrikelnummer>" << endl << endl;
    	CRectangle rectangle1;
    
    	cout << "CRectangle1[(" << rectangle1.getBottomLeftCorner().getX(5) << "," << " " << rectangle1.getBottomLeftCorner().getY(5) << ")" << "," << "(" << rectangle1.getTopRightCorner().getX(25) << " , "<< rectangle1.getTopRightCorner().getY(15)<< " )"<< ","<<  "fillChar";
    
    	return 0;
    }
    


  • mittlerweile nervst du echt!



  • Wieso tust du dir selbst nicht einfach einen gefallen und nimmst erstmal ein Buch zu Hand?



  • Gast12 schrieb:

    Passt das ?

    Schätze mal, nein.

    Vermutlich soll deine main ungefähr so aussehen:

    int main()
    {
        CPoint bottomLeft(5,5);
        CPoint topRight(25,15);
        CRectangle rect(bottomLeft, topRight);
    
        cout << rect;
    }
    

    Edit: Ach ja, und das Ergebnis sollte dann ein, aus '#" gezeichnetes, Rechteck mit den angegebenen Koordinaten auf dem Bildschirm sein.

    Ansonsten nimm dir den Rat von Cardiac zu Herzen, was du bisher fabrizierst sieht sehr planlos aus.



  • Bahn frei für obfuscated Lösungen.


Anmelden zum Antworten