Übungsaufgabe

L

lyon64

Hallo zusammen,

ich bin gerade an einer Übungsaufgabe, an der ich ein wenig Unterstützung gebrauchen kann.

Hier ist die Vorgabe:

C++:
#include "stdafx.h"

using namespace System;

ref class insekt
{
protected:
	Int32 laenge;
	Int32 gewicht;

public:
	insekt (Int32, Int32);
	virtual void essen ();
	virtual void ausgabe ();
};

ref class libelle : insekt
{
	Int32 fluegellaenge;}

insekt::insekt (Int32 l, Int32 g)
{ 
	laenge=1;
	gewicht=g;
}

void insekt::essen ()
{
	laenge++;
	gewicht++;
}

void insekt::ausgabe()
{
	Console::WriteLine ("Das Insekt ist {0} cm lang und wiegt {1} Gramm.", laenge, gewicht);
}


int main(array<System::String ^> ^args)
{
	insekt ^ libelle = gcnew insekt;
		Console::WriteLine("Diese Libelle ist {0} cm lang und {1} g schwer");


    return 0;

Nachfolgende Änderungen sollen programmiert werden:

1.) Leiten Sie aus der Basisklasse eine Klasse libelle ab. Die Klasse libelle
soll zusätzlich das Attribut fluegellaenge enthalten, das über einen
Konstruktor mit einem beliebigen Wert initialisiert werden kann.

2.) Die Methode essen () der Klasse libelle soll neben dem Gewicht und der Länge
auch die Flügellänge um den Wert 1 erhöhen.

3.) Ändern Sie die Methode ausgabe () der Klasse libelle so, dass sie zusätzlich
die Flügellänge ausgiebt.

4.) Erstellen Sie die Funktion main (), welche die Methoden in geeigneter Reihenfolge
und Häufigkeiten aufruft. Das lauffähige Programm soll die nachfolgende
Bildschirmausgabe bewirken.

Diese Libelle ist 20 cm lang und 1 g schwer.
Sie hat eine Flügellänge von 20 cm.

Diese Libelle ist 25 cm lang und 6 g schwer.
Sie hat eine Flügellänge von 25 cm.

Ich habe zwar mit der Aufgabe gegonnen, bin aber schnell auf Probleme
gestossen. Würde mich über jeden Tipp freuen.

Gruß
lyon64
 
Hallo lyon64!

Dieses Forum ist nicht dazu da um fertige Aufgabenstellungen zu lösen.
Du solltest auch was selber machen oder zeigen, dass du es versucht hast!

Ich habe zwar mit der Aufgabe gegonnen, bin aber schnell auf Probleme
gestossen. Würde mich über jeden Tipp freuen.
Welche Probleme? Wie bist du vorgegangen?!

Außerdem ist das gar nicht C++, sondern C# - glaube ich.
 
Hallo ComFreek,

danke, für Deine ehrliche Antwort. Der Kurs, den ich mache nennt sich Visual C++.NET
Ich habe nicht vor, dies beruflich umzusetzen, sonder rein aus privatem Intersse.
Vielleicht mache ich mir dann nicht so große Mühe.

Mein Problem ist die praktische Umsetzung. Wenn ich die Lernhefte lese, meine
ich alles "verstanden" zu haben. Aber, wenn es dann darum geht, dies selber zu
programmieren, stosse ich dann schnell an meine Grenzen.

Ich möchte auch keine fertige Lösung, sondern Tipp, wie ich dies umsetzen kann.

Gruß
lyon64
 
Ich kenne mich eigentlich nicht mit C++.NET aus, aber ich versuche es trotzdem:
1.) Leiten Sie aus der Basisklasse eine Klasse libelle ab. Die Klasse libelle
soll zusätzlich das Attribut fluegellaenge enthalten, das über einen
Konstruktor mit einem beliebigen Wert initialisiert werden kann.

2.) Die Methode essen () der Klasse libelle soll neben dem Gewicht und der Länge
auch die Flügellänge um den Wert 1 erhöhen.

3.) Ändern Sie die Methode ausgabe () der Klasse libelle so, dass sie zusätzlich
die Flügellänge ausgiebt.

4.) Erstellen Sie die Funktion main (), welche die Methoden in geeigneter Reihenfolge
und Häufigkeiten aufruft. Das lauffähige Programm soll die nachfolgende
Bildschirmausgabe bewirken.

Diese Libelle ist 20 cm lang und 1 g schwer.
Sie hat eine Flügellänge von 20 cm.

Diese Libelle ist 25 cm lang und 6 g schwer.
Sie hat eine Flügellänge von 25 cm.

Ich habe zwar mit der Aufgabe gegonnen, bin aber schnell auf Probleme
gestossen. Würde mich über jeden Tipp freuen.
Du hast ja bereits libelle von insekt abgeleitet.
Jetzt musst du noch den Konstruktor von libelle machen. Das geht genau wie bei der Elternklasse insekt.

Zu 1, 2, 3:
Code:
ref class libelle : insekt
{
  public:
    Int32 fluegellaenge;
    libelle(Int32, Int32, Int32);
    
    void essen();
    void ausgabe();
}
void libelle::libelle(Int32 l, Int32 g, Int32 fl)
{
  insekt::insekt(l,g);
  fluegellaenge = fl;
}
Code:
void libelle::essen()
{
  insekt::essen();
  fluegellaenge++;
}
void libelle::ausgabe()
{
  Console::WriteLine ("Das Insekt ist {0} cm lang, wiegt {1} Gramm und hat eine Flügellänge von {2} cm.", laenge, gewicht, fluegellaenge);
}
Wie gesagt, ich kenne mich in C++.NET nicht aus, und bin mir beim Befehl insekt::xx nicht sicher, ob das geht.

Jetzt habe ich doch eine fertige Lösung gepostet, naja war irgendwie interessant das coden :D
Ich habe einen Teil des Codes in einen Spoiler gepackt, diesen siehst du nur, wenn du ihn mit der Maus markierst.


Probier mal die 4 alleine ;)
 
Zuletzt bearbeitet:
Hallo ComFreek,

vielen Dank, dass ist mehr als ich erwartet habe.
Wünsche noch einen schönen Abend.

Gruß
lyon64
 
Zurück