Konstruktor



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



  • Gast12 schrieb:

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

    Ich denke mal der erwartet (oder eventuell auch nicht), dass durch das Lösen der Aufgabe Verständnis für das Programmieren und die Sprache entwickelst.
    Das wird aber nicht passieren, wenn du einfach nur rätst und da irgendwas reinschreibst.
    Du musst schon die Logik dahinter verstehen und dir auch etwas dabei denken.

    Im Endeffekt drückt man beim Programmieren einen logischen Gedankengang in einer formalen Sprache aus - wenn man die Logik einfach weglässt und per trial und error + Forenposts irgendwann zum Ergebnis kommt, dann hat man aber nichts gelernt.



  • 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