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 4 5 [6] 7 8 nächste » ... letzte » Neues Thema erstellen Thema ist geschlossen
Zum Ende der Seite springen Programmierung 2
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

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

Die Zeit, die Du hier investierst um as_string die Lösung aus der Nase zu ziehen solltest Du besser investieren um zu verstehen, was Du da tun sollst und was dir hier erklärt wird. Offensichtlich hängt es bereits an den absoluten Grundlagen. Solltest Du dazu nicht in der Lage sein, lege ich dir einen Fachwechsel ans Herz.

Besten Gruß,

Karlito
14.09.2017 12:29 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito 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

Bitte string hilf mir trotzdem weiter großes Grinsen

Ich will es nicht so schnell aufgeben
14.09.2017 13:36
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 versteh eigentlich schon Deine Frage nicht wirklich bzw. wo es eigentlich hängt. Angenommen Du wolltest testen, ob der schon fest eingebaute ==-Operator für integer-Variablen funktioniert wie gewünscht. Was könntest Du da beispielsweise machen? Ich würde zwei Variablen anlegen und sie einmal mit gleichen Ganzzahlen belegen und einmal mit ungleichen. Dann würde ich überprüfen, ob der Operator in den beiden Fällen sich wie erwartet verhält.
Kennst Du eine Situation, bei der Du den ==-Operator häufig verwendest? Weißt Du überhaupt, was ein Operator ist und was dieser "==" bedeutet?

Gruß
Marco
14.09.2017 20: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

Ich weiss nicht wie ich die operator == FUnktion aufruft ?
Wie macht man das ?
Ich weiss nicht was operator == genau ist.

Bin ehrlich großes Grinsen
15.09.2017 19:05
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

Schön, dass Du ehrlich bist, aber offenbar hast Du dann nicht viel von dem verstanden, was ich über Operatoren vorher schon so geschrieben hatte.
Lies Dir nochmal durch, was ich 08.09.2017 13:28 geschrieben habe. Daraus musst Du doch ableiten können, was zu tun ist...

Gruß
Marco
15.09.2017 23:52 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

Kann ich es in der main etwa so aufbauen?

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:

int main(){


	if( m_topRight == other.m_topRight &&  m_bottomLeft == other.m_bottomLeft &&m_fillChar == other.m_fillChar){

cout << " Rechteck ist gleich " << endl;

}


else{

cout << "false" << endl;






}


Ist das in der Aufgabe gemeint ?
16.09.2017 01:58
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

Also erstmal musst Du ja zwei Rechtecke (also Objekte der Klasse CRectangle) anlegen. Davon sehe ich noch nichts.
Dann gibt es die Variablen doch alle in main() gar nicht!
Das was Du geschrieben hast, ist doch die Definition des Operators, wie Du sie schon an zentraler Stelle als Member der Klasse CRectangle gemacht hast. Das machst Du doch logischerweise gerade deshalb, damit Du in der main() das dann nicht mehr machen musst, das ist doch gerade der Witz an der Sache!
Nochmal: Wenn Du eine Klasse schreibst, dann kennst Du deren innerne Aufbau, deren Membervariablen und die Semantik derer. Wenn Du diese kennst und nur wenn Du diese kennst, kannst Du definieren, wann zwei Objekte einer solchen Klasse gleich sind.
In der main() sollst Du gar keine Annahmen über den inneren Aufbau der CRectangle-Objekte machen müssen, Du musst nicht wissen, dass die zwei Ecken und ein Füllzeichen haben und schon gar nicht, wie die entsprechenden Variablen heißen.
Angenommen Du kommst irgendwann auf die Idee zu sagen: Anstelle der beiden Eckpunkte des Rechtecks will ich mir in Zukunft nur noch den Mittelpunkt des Rechtecks und seine Höhe und Breite speichern. Einfach weil ich festgestellt habe im Laufe der Zeit, dass das günstiger ist, weil ich diese Angaben viel häufiger brauche. Zwar kannst Du diese Werte aus den Koordinaten der Eckpunkte ausrechnen und entsprechende Memberfunktionen anbieten, die diese zurück liefern, aber Du musst halt immer rechnen und könntest auch umgekehrt Höhe/Breite und Mittelpunkt Dir direkt merken und aus diesen dann die Eckpunkte ausrechnen, wenn Du diese brauchst (was aber vielleicht seltener der Fall ist). Du könntest die inneren (private-deklarierten) Variablen passend umbauen und müsstest alle Funktionen auch entsprechend anpassen, aber eben nur die Member-Methoden der Klasse, alle Verwender würden davon gar nichts mitbekommen, weil sie ja nur diese Methoden aufrufen.
Das ist natürlich dann auch bei den Operatoren so. Wenn ich andere Variablen habe, muss ich auch diese anpassen. Die Verwendung bleibt aber gleich, Du schreibst einfach:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
int main() {
    CRectangle a(CPoint(5, 5), CPoint(25, 15)), b(CPoint(1, 2), CPoint(3, 4));
    if(a ==b) 
        cout << "Rechtecke gleich" << endl;
    else
        cout << "Rechtecke verschieden" << endl;
    return 0;
}

Aber ich habe wirklich nicht die Erwartung, dass Du jetzt auch irgendwas verstanden hättest... Was soll das alle bringen?

Gruß
Marco
16.09.2017 19:05 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

Doch ich verstehe was du da geschrieben hast .
Man kann einfach die angelegten Rechtecke a und b einfach mit a==b vergleich und fertig .

Ich habe einfach zu kompliziert gedacht .

Man musste gar nicht die operator == funktion aufrufen .
16.09.2017 20:36
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

Zitat:
Original von Victor
Man musste gar nicht die operator == funktion aufrufen .

Doch natürlich!!! Das machst Du doch gerade, wenn Du a == b schreibst! Das wäre quasi entsprechend a.operator==(b).

Nochmal: Wenn Du irgendwo sowas wie a == b stehen hast, oder auch a + b etc., und a und/oder b sind keine primitiven Datentypen wie int, double, etc, dann wird der entsprechende operatorXYZ() aufgerufen.

Lerne doch erst solche grundlegenden Dinge, sonst bringt das doch alles nichts!

Gruß
Marco
16.09.2017 21:44 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

Ah ok .
Jetzt peile ich es .
großes Grinsen

Aber string ich finde dass man um programmieren zu lernen ja auch ein wenig proggen muss.
Ich weiss dir ist es vielleicht leicht gefallen nach Büchern lesen vielleicht zu proggen.

Aber ich kann das Zeug nach dem lesen auch nicht anwenden .

Ich denke ,dass man es durch anwenden lernt .
Ok ich setze mich jetzt an die nächsten Aufgabenteile großes Grinsen
16.09.2017 22:22
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 meine es ist eher eine Frage der Effizienz. Ich kann auch eine Fremdsprache lernen indem ich einfach dort hin fahre und versuche mit den Leuten zu reden, zuerst mit Händen und Füßen, irgendwann dann ziemlich gebrochen, aber immerhin. Allerdings lernt man auch Fremdsprachen i. A. indem man zuerst eine Menge Vokabeln und Grammatik lernt, bevor man sich versucht mit Leuten zu unterhalten. Manche Dinge wird man sicherlich auch nach vielen Jahren noch falsch machen, wenn man nicht irgendwann auch mal die Grammatik gelernt hat.
Und das funktioniert auch nur, weil es natürliche Sprachen sind. Das alles wird viel schwieriger, wenn es solche Konstrukte wie Programmiersprachen sind. Das lässt sich sicherlich weniger intuitiv erlernen als eine natürliche Sprache.
16.09.2017 22:47 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

Wie soll das genau jetzt mit der Draw Methode funktionieren ?

Das steht ja in der Header:

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

Auf das Füllzeichen des Rechtecks ?
Ist das die Variable screen oder wie ?

So?

code:
1:
2:
3:
4:
5:
6:
7:
8:
void CRectangle::draw(CScreen& screen) const
{
	screen->CScreen::setPoint();
}




Das ist so kompliziert zu verstehen .

Was wollen die genau überhaupt ?

Victor hat dieses Bild (verkleinerte Version) angehängt:
h.png

17.09.2017 01:24
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

Sorry, aber das ist doch völlig hoffnungslos!

Da haben wir jetzt wochenlang über die CRectangle Klasse mit ihren Konstruktoren geschrieben, dabei auch gesehen, dass es verschiedene Konstruktoren gibt, die die Member-Variablen der Klasse belegen, wovon es ganze 3 gibt, zwei Eckpunkte und ein Füllzeichen, und jetzt kommst Du und fragst, was denn das für ein Füllzeichen sein soll??? Und ob die screen-Variable das sein soll, obwohl groß und breit erklärt wird, dass dieses Objekt der Klasse CScreen ist, die verwendet wird, um auf dem Bildschirm (Screen heißt übersetzt Bildschirm!) irgendwelche "Punkte" zu setzen, die aber eigentlich einzelne Zeichen sind.
Dafür gibt es die Methode setPoint in der Klasse, die aber drei Argumente erwartet, wie Du aus dem Klassendiagramm erkennen kannst.
Was Du wieder geschrieben hast hat selbst auch wieder mindestens zwei verschiedene Fehler und eine "Ungewöhnlichkeit", die aber allesamt aufzeigen, dass Du wirklich so absolut noch gar nichts kapiert hast von dem, was wir hier schon seit Wochen versuchen.
Wie kommst Du plötzlich auf "->"? Das hatten wir hier ja noch gar nicht. Weißt Du was dieser Operator bedeutet und was der Unterschied zu einem einzelnen Punkt ist? So etwas lernst Du nicht durchs einfache mal Rumprobieren, sondern indem Du ein Buch zur Hand nimmst (oder Dich im Internet nach C++-Kursen umsiehst, die gibt es da wie Sand am Meer, auch kostenlos).
Warum schreibst Du jetzt wieder CScreen::setPoint??? Das haben wir doch bei einem Aufruf noch nie gemacht. Das Objekt screen ist doch schon von der Klasse CScreen und es ist doch gerade ein zentraler Punkt der Objektorientierten Programmierung, dass ich dann eben die Klasse CScreen bei einem Methodenaufruf nicht mehr explizit benennen muss, weil der Kompiler aufgrund des Objekts das auch selbst ermitteln kann!
Dann steht im Klassendiagramm, dass setPoint zwei Argumente erwartet, Du aber schreibst kein einziges in die Klammern.
Das sind schon drei syntaktische Fehler in einer Zeile.
Dann erst kommt die Semantik. Da hast Du ja überhaupt gar nichts verstanden: Du sollst anhand der Eckpunkte jeden Punkt des Rechtecks ermitteln (in verschachtelten for-Schleifen vielleicht?) und für jeden einzelnen dieser Punkte die Methode setPoint() aufrufen. Aber ich sehe im Moment wirklich keine Chance, wie Du das mit Deinem Wissensstand hinbekommen solltest. Das ist doch einfach utopisch!

Ich will nicht mehr meine Zeit damit vergeuden. Das ganze Unterfangen ist hoffnungslos und frisst nur Deine und meine Zeit auf, ohne irgendwelche Fortschritte. Such Dir endlich ein Buch und lerne wenigstens die Grundlagen, so wie jeder andere, der eine Programmiersprache oder Programmieren im Allgemeinen lernen will!

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

über was soll denn die for schleife gehen?
for (int i =0;i>0;i++)
17.09.2017 23:03
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

Was soll das für eine for-Schleife sein? Von wo bis wo soll denn i laufen?
Du brauchst zwei ineinander verschachtelte for-Schleifen. Eine für die x-Koordinate und eine für die y-Koordinate. Die x-Koordinate muss vom linken bis zum rechten Rand des Rechtecks laufen, die y-Variable vom unteren Rand zum oberen.

Gruß
Marco
18.09.2017 00:31 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 4 5 [6] 7 8 nächste » ... letzte » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Thema ist geschlossen
Informatiker Board » Themengebiete » Praktische Informatik » Programmierung 2