<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Überladen und AR-Drone Programmierung]]></title><description><![CDATA[<p>Guten Sonntag alle zusammen.<br />
Ich beschäftige mich seit diesem Semester mit der Programmiersprache C++(Informationstechnik für Ingenieure).<br />
An sich macht es Spaß mit Cpp zu programmieren, dennoch habe ich diverse Probleme beim Objektorientierten Programmieren.</p>
<p>Zu meiner ersten Frage:<br />
Ich versuche seit gut einer Woche mit dem Überladen von Operatoren, leider verstehe ich nicht ganz wie es von statten gehen soll.<br />
Die Aufgabe ist vom letzten Teilbereich meiner Hausaufgabe, die ich bis dahin gelöst habe.<br />
Aufgabe 2.1</p>
<blockquote>
<p>Implementieren Sie mindestens zwei Operatoren + und * um einen Bruch der Klasse<br />
Fraction mit einem anderen Bruch der Klasse Fraction zu addieren. Bei Belieben<br />
können Sie auch Operatoren für - und / implementieren.</p>
</blockquote>
<p>Aufgabe 2.2</p>
<blockquote>
<p>Implementieren Sie mindestens zwei Operatoren + und * um eine Zahl des Typs float<br />
mit einem Bruch der Klasse Fraction zu addieren. Bei Belieben können Sie auch<br />
Operatoren für - und / implementieren.</p>
</blockquote>
<p>Meine Headerdatei sieht wie folgt aus:</p>
<pre><code>#pragma once

#ifndef FRACTION_H
#define FRACTION_H

#include&lt;string&gt;
using namespace std;

class fraction{
//Definition der Membervarialblen als private
private:
	int    m_Zaehler;
	int    m_Nenner;

//	
public:
	//Standardkonstruktor
    fraction(){
        m_Nenner = 1;
        m_Zaehler = 1;
    };
	// weiterer Konstruktor
    fraction(int Zaehler, int Nenner);
	//Destruktor
    ~fraction();
	//Namen der einzelen Methoden; Programmcode in fraction.ccp
    int getZaehler();
    int getNenner();

    void add(fraction fracToAdd);
    void sub(fraction fracToSub);
    void mul(fraction fracToMul);
    void div(fraction fracToDiv);

    void cancel();
    void expand(int a);
    void print();

    float getFPNum();

};

#endif
</code></pre>
<p>Die Fraction Cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;fraction.h&quot;
using namespace std;

//Konstruktor
fraction::fraction(int Zaehler, int Nenner){
	m_Zaehler=Zaehler;
	m_Nenner=Nenner;
}
//Zählerausgabefunktion
int fraction::getZaehler(){
	return m_Zaehler;
}
//Nennerausgabefunktion
int fraction::getNenner(){
	return m_Nenner;
}

//---------------------------------------------------
//Addition von zwei Brüchen ((Zähler1*Nenner2+Zähler2*Nenner1)/Nenner1*Nenner2)
void fraction::add(fraction fracToAdd){
	cout &lt;&lt;&quot;\t\tAddition: &quot;;
    cout &lt;&lt; (m_Zaehler * fracToAdd.m_Nenner) + (fracToAdd.m_Zaehler * m_Nenner);

	if (m_Zaehler * fracToAdd.m_Nenner+fracToAdd.m_Zaehler * m_Nenner == 0)
	cout &lt;&lt;&quot;\t\t  0 \n&quot;;
	else
	cout &lt;&lt; &quot;\t\t  &quot; &lt;&lt; m_Nenner * fracToAdd.m_Nenner &lt;&lt; &quot;\n&quot;;
}

//Subtraktion von zwei Brüchen((Zähler1*Nenner2-Zähler2*Nenner1)/Nenner1*Nenner2)
void fraction::sub(fraction fracToSub){
	cout &lt;&lt;&quot;\t      Subraktion: &quot;;
    cout &lt;&lt;(m_Zaehler * fracToSub.m_Nenner)-(fracToSub.m_Zaehler * m_Nenner);

	if (m_Zaehler * fracToSub.m_Nenner - fracToSub.m_Zaehler * m_Nenner == 0)
    cout &lt;&lt;&quot;\t\t  0 \n&quot;;
	else 
	cout &lt;&lt;&quot;\t\t  &quot; &lt;&lt; m_Nenner * fracToSub.m_Nenner &lt;&lt; &quot;\n&quot;;
}

//Multiplikation von zwei Brüchen (Zähler1*Zähler2/Nenner1*Nenner2)
void fraction::mul(fraction fracToMul){
	cout &lt;&lt;&quot;\t  Multiplikation: &quot;;
    cout &lt;&lt; m_Zaehler * fracToMul.m_Zaehler;
    cout &lt;&lt;  &quot;\t\t  &quot; &lt;&lt;m_Nenner * fracToMul.m_Nenner &lt;&lt; &quot;\n&quot;;
}

//Division von zwei Brüchen (Zähler1*Nenner2/Nenner1*Zähler2)
void fraction::div(fraction fracToDiv){
	cout &lt;&lt;&quot;\t\t Divison: &quot;;
    cout &lt;&lt; m_Zaehler * fracToDiv.m_Nenner;
    cout &lt;&lt; &quot;\t\t  &quot; &lt;&lt; m_Nenner * fracToDiv.m_Zaehler &lt;&lt; &quot;\n\n&quot;;
}

//---------------------------------------------------

//Algorithmus für das ggt von Zähler und Nenner
 int ggT( int a, int b){
    if(b == 0)
        return a;
    else return ggT(b, a % b);
}

//Methode Kürzen
void fraction::cancel(){
   int tmp(ggT(m_Zaehler,m_Nenner));
   m_Zaehler /= tmp;
   m_Nenner  /= tmp;
   cout&lt;&lt;&quot;   &quot; &lt;&lt;m_Zaehler;
   cout&lt;&lt;&quot;\t\t  &quot; &lt;&lt;m_Nenner&lt;&lt;&quot;\n\n&quot;;
}

// Methode Erweitern
void fraction::expand(int a){

    cout &lt;&lt;&quot;\t   &quot; &lt;&lt; m_Zaehler*a;
    cout &lt;&lt;&quot;\t\t  &quot; &lt;&lt; m_Nenner*a  &lt;&lt; &quot;\n\n&quot;;
}
//Ausgabefunktion in Bruchschreibweise
void fraction::print(){
    cout &lt;&lt; &quot;\t\t\t &quot; &lt;&lt; m_Zaehler &lt;&lt;endl;
	cout &lt;&lt; &quot;\t\t\t----&quot; &lt;&lt;endl;
	cout &lt;&lt; &quot;\t\t\t &quot; &lt;&lt;m_Nenner &lt;&lt;endl;
	cout&lt;&lt;endl;
}
//---------------------------------------------------
//Ausgabefunktion in Dezimalbruchschreibweise
float fraction::getFPNum(){
	float a = m_Zaehler;
    float b = m_Nenner;
    return a/b;
}
//Destruktor
fraction::~fraction(){}
</code></pre>
<p>Wäre echt Dankbar wenn ihr mir helfen könntet, muss es bis zum 22.1 fertig haben , da ich sonst keine Klausurzulassung bekomme.</p>
<p>Meine zweite Problem ist, dass wir eine AR-Drone Programmieren müssen und für einen 40 Mann Kurs nur eine Drone haben und nur für eine Person einen Server für die Simulation haben. Was im Endeffekt heißt man hat kaum eine Chance selbst zu testen was man da programmiert.</p>
<p>Wir haben folgende Dateien bekommen:<br />
AR-Drone.rar (Boost Dateien und einen Drone Client)<br />
<a href="http://www46.zippyshare.com/v/vMHUyDaN/file.html" rel="nofollow">http://www46.zippyshare.com/v/vMHUyDaN/file.html</a></p>
<p>So nun zu meiner Frage:<br />
1)Habt ihr ne Idee wie ich die Simulation auf meinen eigenen Rechner starten kann, da ich gerne mich weiter beschäftigen würde.<br />
2) Und wie kann ich eine erbende Klasse von DroneClient schreiben welche dann eine Ausgabe erzeugt wenn vor der Drohne ein buter Tag(Markierung) erscheint. Danach soll sich die Drohne so drehen, dass sie mittig auf den Tag schaut.</p>
<p>Vielen Dank im Voraus, hoffe das ich keine zu dummen Fragen gestellt habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330603/überladen-und-ar-drone-programmierung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Jul 2026 02:32:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330603.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Jan 2015 11:27:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 12:04:49 GMT]]></title><description><![CDATA[<p>Guten Sonntag alle zusammen.<br />
Ich beschäftige mich seit diesem Semester mit der Programmiersprache C++(Informationstechnik für Ingenieure).<br />
An sich macht es Spaß mit Cpp zu programmieren, dennoch habe ich diverse Probleme beim Objektorientierten Programmieren.</p>
<p>Zu meiner ersten Frage:<br />
Ich versuche seit gut einer Woche mit dem Überladen von Operatoren, leider verstehe ich nicht ganz wie es von statten gehen soll.<br />
Die Aufgabe ist vom letzten Teilbereich meiner Hausaufgabe, die ich bis dahin gelöst habe.<br />
Aufgabe 2.1</p>
<blockquote>
<p>Implementieren Sie mindestens zwei Operatoren + und * um einen Bruch der Klasse<br />
Fraction mit einem anderen Bruch der Klasse Fraction zu addieren. Bei Belieben<br />
können Sie auch Operatoren für - und / implementieren.</p>
</blockquote>
<p>Aufgabe 2.2</p>
<blockquote>
<p>Implementieren Sie mindestens zwei Operatoren + und * um eine Zahl des Typs float<br />
mit einem Bruch der Klasse Fraction zu addieren. Bei Belieben können Sie auch<br />
Operatoren für - und / implementieren.</p>
</blockquote>
<p>Meine Headerdatei sieht wie folgt aus:</p>
<pre><code>#pragma once

#ifndef FRACTION_H
#define FRACTION_H

#include&lt;string&gt;
using namespace std;

class fraction{
//Definition der Membervarialblen als private
private:
	int    m_Zaehler;
	int    m_Nenner;

//	
public:
	//Standardkonstruktor
    fraction(){
        m_Nenner = 1;
        m_Zaehler = 1;
    };
	// weiterer Konstruktor
    fraction(int Zaehler, int Nenner);
	//Destruktor
    ~fraction();
	//Namen der einzelen Methoden; Programmcode in fraction.ccp
    int getZaehler();
    int getNenner();

    void add(fraction fracToAdd);
    void sub(fraction fracToSub);
    void mul(fraction fracToMul);
    void div(fraction fracToDiv);

    void cancel();
    void expand(int a);
    void print();

    float getFPNum();

};

#endif
</code></pre>
<p>Die Fraction Cpp</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;fraction.h&quot;
using namespace std;

//Konstruktor
fraction::fraction(int Zaehler, int Nenner){
	m_Zaehler=Zaehler;
	m_Nenner=Nenner;
}
//Zählerausgabefunktion
int fraction::getZaehler(){
	return m_Zaehler;
}
//Nennerausgabefunktion
int fraction::getNenner(){
	return m_Nenner;
}

//---------------------------------------------------
//Addition von zwei Brüchen ((Zähler1*Nenner2+Zähler2*Nenner1)/Nenner1*Nenner2)
void fraction::add(fraction fracToAdd){
	cout &lt;&lt;&quot;\t\tAddition: &quot;;
    cout &lt;&lt; (m_Zaehler * fracToAdd.m_Nenner) + (fracToAdd.m_Zaehler * m_Nenner);

	if (m_Zaehler * fracToAdd.m_Nenner+fracToAdd.m_Zaehler * m_Nenner == 0)
	cout &lt;&lt;&quot;\t\t  0 \n&quot;;
	else
	cout &lt;&lt; &quot;\t\t  &quot; &lt;&lt; m_Nenner * fracToAdd.m_Nenner &lt;&lt; &quot;\n&quot;;
}

//Subtraktion von zwei Brüchen((Zähler1*Nenner2-Zähler2*Nenner1)/Nenner1*Nenner2)
void fraction::sub(fraction fracToSub){
	cout &lt;&lt;&quot;\t      Subraktion: &quot;;
    cout &lt;&lt;(m_Zaehler * fracToSub.m_Nenner)-(fracToSub.m_Zaehler * m_Nenner);

	if (m_Zaehler * fracToSub.m_Nenner - fracToSub.m_Zaehler * m_Nenner == 0)
    cout &lt;&lt;&quot;\t\t  0 \n&quot;;
	else 
	cout &lt;&lt;&quot;\t\t  &quot; &lt;&lt; m_Nenner * fracToSub.m_Nenner &lt;&lt; &quot;\n&quot;;
}

//Multiplikation von zwei Brüchen (Zähler1*Zähler2/Nenner1*Nenner2)
void fraction::mul(fraction fracToMul){
	cout &lt;&lt;&quot;\t  Multiplikation: &quot;;
    cout &lt;&lt; m_Zaehler * fracToMul.m_Zaehler;
    cout &lt;&lt;  &quot;\t\t  &quot; &lt;&lt;m_Nenner * fracToMul.m_Nenner &lt;&lt; &quot;\n&quot;;
}

//Division von zwei Brüchen (Zähler1*Nenner2/Nenner1*Zähler2)
void fraction::div(fraction fracToDiv){
	cout &lt;&lt;&quot;\t\t Divison: &quot;;
    cout &lt;&lt; m_Zaehler * fracToDiv.m_Nenner;
    cout &lt;&lt; &quot;\t\t  &quot; &lt;&lt; m_Nenner * fracToDiv.m_Zaehler &lt;&lt; &quot;\n\n&quot;;
}

//---------------------------------------------------

//Algorithmus für das ggt von Zähler und Nenner
 int ggT( int a, int b){
    if(b == 0)
        return a;
    else return ggT(b, a % b);
}

//Methode Kürzen
void fraction::cancel(){
   int tmp(ggT(m_Zaehler,m_Nenner));
   m_Zaehler /= tmp;
   m_Nenner  /= tmp;
   cout&lt;&lt;&quot;   &quot; &lt;&lt;m_Zaehler;
   cout&lt;&lt;&quot;\t\t  &quot; &lt;&lt;m_Nenner&lt;&lt;&quot;\n\n&quot;;
}

// Methode Erweitern
void fraction::expand(int a){

    cout &lt;&lt;&quot;\t   &quot; &lt;&lt; m_Zaehler*a;
    cout &lt;&lt;&quot;\t\t  &quot; &lt;&lt; m_Nenner*a  &lt;&lt; &quot;\n\n&quot;;
}
//Ausgabefunktion in Bruchschreibweise
void fraction::print(){
    cout &lt;&lt; &quot;\t\t\t &quot; &lt;&lt; m_Zaehler &lt;&lt;endl;
	cout &lt;&lt; &quot;\t\t\t----&quot; &lt;&lt;endl;
	cout &lt;&lt; &quot;\t\t\t &quot; &lt;&lt;m_Nenner &lt;&lt;endl;
	cout&lt;&lt;endl;
}
//---------------------------------------------------
//Ausgabefunktion in Dezimalbruchschreibweise
float fraction::getFPNum(){
	float a = m_Zaehler;
    float b = m_Nenner;
    return a/b;
}
//Destruktor
fraction::~fraction(){}
</code></pre>
<p>Wäre echt Dankbar wenn ihr mir helfen könntet, muss es bis zum 22.1 fertig haben , da ich sonst keine Klausurzulassung bekomme.</p>
<p>Meine zweite Problem ist, dass wir eine AR-Drone Programmieren müssen und für einen 40 Mann Kurs nur eine Drone haben und nur für eine Person einen Server für die Simulation haben. Was im Endeffekt heißt man hat kaum eine Chance selbst zu testen was man da programmiert.</p>
<p>Wir haben folgende Dateien bekommen:<br />
AR-Drone.rar (Boost Dateien und einen Drone Client)<br />
<a href="http://www46.zippyshare.com/v/vMHUyDaN/file.html" rel="nofollow">http://www46.zippyshare.com/v/vMHUyDaN/file.html</a></p>
<p>So nun zu meiner Frage:<br />
1)Habt ihr ne Idee wie ich die Simulation auf meinen eigenen Rechner starten kann, da ich gerne mich weiter beschäftigen würde.<br />
2) Und wie kann ich eine erbende Klasse von DroneClient schreiben welche dann eine Ausgabe erzeugt wenn vor der Drohne ein buter Tag(Markierung) erscheint. Danach soll sich die Drohne so drehen, dass sie mittig auf den Tag schaut.</p>
<p>Vielen Dank im Voraus, hoffe das ich keine zu dummen Fragen gestellt habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438195</guid><dc:creator><![CDATA[v0rt]]></dc:creator><pubDate>Sun, 18 Jan 2015 12:04:49 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 11:56:41 GMT]]></title><description><![CDATA[<p>In deinem Code kommt kein Operator vor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438197</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 18 Jan 2015 11:56:41 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 12:07:04 GMT]]></title><description><![CDATA[<p>Habe jetzt auch die cpp Datei eingefügt mit den ganzen Funktionen, wenn nötig füge ich auch die Main.cpp ein. Habe nur bedenken, dass die Hausaufgabe gefunden wird und Plagiat vorgeworfen wird.<br />
Vielen Dank.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438199</guid><dc:creator><![CDATA[v0rt]]></dc:creator><pubDate>Sun, 18 Jan 2015 12:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 12:14:54 GMT]]></title><description><![CDATA[<p>Es ist immer noch kein operator vorhanden.</p>
<p>Ein Operator sieht so aus</p>
<pre><code class="language-cpp">const X operator+(X const&amp; lhs, X const&amp; rhs);
</code></pre>
<p>Und ist keine Memberfunktion.</p>
<p>Siehe auch<br />
<a href="https://www.c-plusplus.net/forum/232010-full">https://www.c-plusplus.net/forum/232010-full</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438201</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 18 Jan 2015 12:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 12:32:23 GMT]]></title><description><![CDATA[<p>s. <a href="https://www.c-plusplus.net/forum/232010">Überladung von Operatoren in C++ (Teil 1)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438206</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Sun, 18 Jan 2015 12:32:23 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 14:22:59 GMT]]></title><description><![CDATA[<pre><code>//Überladung
fraction  operator+(const fraction&amp; lhs, const fraction&amp; rhs);
{

};
</code></pre>
<p>Habe in die Headerdatei ganz unten dies eingefügt, Visual Studio zeigt mir dass bei dem ersten { eine Deklaration erwartet wurde.<br />
Ist mein Ansatz wenigstens richtig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438220</guid><dc:creator><![CDATA[v0rt]]></dc:creator><pubDate>Sun, 18 Jan 2015 14:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 15:03:34 GMT]]></title><description><![CDATA[<p>Wie bei jeder anderen Funktion auch gehört keines der Semikolon dahin. Wenn alles ausserhalb der Klassendefinition steht, ist es im Prinzip richtig. Da du Funktionsdefinition in den Header schreiben willst, muss noch ein inline davor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438227</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 18 Jan 2015 15:03:34 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 15:11:50 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Es ist immer noch kein operator vorhanden.</p>
<p>Ein Operator sieht so aus</p>
<pre><code class="language-cpp">const X operator+(X const&amp; lhs, X const&amp; rhs);
</code></pre>
</blockquote>
<p>Kleine Anmerkung am Rande:<br />
Es empfiehlt sich hier den Rückgabewert nicht <code>const</code> zu deklarieren, da es</p>
<p>1. den Aufruf von nicht const-Memberfunktionen auf dem temporären, namenlosen Objekt verhindert (Ausdrücke wie <code>c = ++(a + b);</code> möchte man vielleicht erlauben).</p>
<p>2. Move-Operationen verhindert: <code>c = a + b</code> führt so z.B. immer zu einer zusätzlichen Kopie, da eine Move-Operation üblicherweise das verschobene Objekt verändern muss (indem z.B. ein interner Pointer genullt wird). Move-Operatoren erwarten üblicherweise eine <em>nicht-konstante</em> rvalue-Referenz.</p>
<p>Gruss,<br />
Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438232</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Sun, 18 Jan 2015 15:11:50 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen und AR-Drone Programmierung on Sun, 18 Jan 2015 16:43:36 GMT]]></title><description><![CDATA[<p>Weil mir das gerade so auffällt: Du verwendest keinen string. Daher lass das <code>#include &lt;string&gt;</code> einfach weg. Und ein <code>using namespace std</code> im Header geht gar nicht. Und in dem Fall verwendest Du noch nicht mal den Namespace std.</p>
<p>Const correctness hast Du wahrscheinlich noch nicht gelernt. Solltest Du bei Gelegenheit mal anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438250</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Sun, 18 Jan 2015 16:43:36 GMT</pubDate></item></channel></rss>