C++ :: Aufgabe #287 :: Lösung #1
2 Lösungen
#287
Mathematische Vektoroperationen
Anfänger - C++
von thunderbird
- 28.04.2020 um 21:51 Uhr
Erstellen Sie ein Programm/ eine Funktion, mit der Vektorberechnungen durchgeführt werden können.
"Vektor" soll eine eigens erstellte Klasse sein, die aus 3 Fließkommazahlen bestehen.
Zudem beinhaltet die Klasse "Vektor" eine Methode zur Skalarmultiplikation, Addition, Subtraktion, Division und um das Kreuzprodukt zu berrechnen.
Erstellen Sie zur Darstellung eine Ausgabemethode.
Hinweis:
- Anstatt neue Methoden zu erstellen, können (sofern möglich) bereits vorhandene überladen werden.
- Mathematische Rechenregeln unter: https://de.wikipedia.org/wiki/Vektor
"Vektor" soll eine eigens erstellte Klasse sein, die aus 3 Fließkommazahlen bestehen.
Zudem beinhaltet die Klasse "Vektor" eine Methode zur Skalarmultiplikation, Addition, Subtraktion, Division und um das Kreuzprodukt zu berrechnen.
Erstellen Sie zur Darstellung eine Ausgabemethode.
Hinweis:
- Anstatt neue Methoden zu erstellen, können (sofern möglich) bereits vorhandene überladen werden.
- Mathematische Rechenregeln unter: https://de.wikipedia.org/wiki/Vektor
#1
von JKooP (18090 Punkte)
- 30.04.2020 um 17:41 Uhr
CPP_Aufgabe_287_Vektoren.cpp
C-Code
Vektor.h
C-Code
Vektor.cpp
C-Code
#include "Vektor.h"
int main()
{
auto v1 = Vektor(3, 7, 6);
auto v2 = Vektor(2, 5, 3);
auto skalar = 3;
auto summe = v1 + v2;
cout << summe << endl;
auto differenz = v2 - v1;
cout << differenz << endl;
auto produkt = v1 * v2;
cout << produkt << endl;
auto skalarProdukt = skalar * v1;
cout << skalarProdukt << endl;
auto skalarQuotient = v2 / skalar;
cout << skalarQuotient << endl;
auto kreuzProdukt = v1 / v2;
cout << kreuzProdukt << endl;
}
Vektor.h
#pragma once
#include <iostream>
#include <ostream>
using namespace std;
class Vektor
{
private:
Vektor() {}
double X1 = 0, X2 = 0, X3 = 0;
public:
Vektor(double x1, double x2, double x3) { X1 = x1; X2 = x2; X3 = x3; };
friend Vektor operator +(Vektor const&, Vektor const&);
friend Vektor operator -(Vektor const&, Vektor const&);
friend Vektor operator *(double const&, Vektor const&);
friend double operator *(Vektor const&, Vektor const&);
friend Vektor operator /(Vektor const&, Vektor const&);
friend Vektor operator /(Vektor const&, double const&);
friend ostream& operator<<(ostream& os, Vektor const&);
};
Vektor.cpp
#include "Vektor.h"
// Ausgabe als Vektor
ostream& operator<<(ostream& os, Vektor const& v)
{
return os << v.X1 << ", " << v.X2 << ", " << v.X3;
};
// Addition
Vektor operator +(Vektor const& v1, Vektor const& v2)
{
return Vektor(v1.X1 + v2.X1, v1.X2 + v2.X2, v1.X3 + v2.X3);
};
// Subtraktion
Vektor operator -(Vektor const& v1, Vektor const& v2)
{
return Vektor(v1.X1 - v2.X1, v1.X2 - v2.X2, v1.X3 - v2.X3);
};
// Skalar- Multiplikation
Vektor operator *(double const& skalar, Vektor const& v)
{
return Vektor(v.X1 * skalar, v.X2 * skalar, v.X3 * skalar);
};
// Multiplikation
double operator *(Vektor const& v1, Vektor const& v2)
{
return v1.X1 * v2.X1 + v1.X2 * v2.X2 + v1.X3 * v2.X3;
};
// Kreuzprodukt
Vektor operator /(Vektor const& v1, Vektor const& v2)
{
return Vektor(v1.X2 * v2.X3 - v1.X3 * v2.X2, v1.X3 * v2.X1 - v1.X1 * v2.X3, v1.X1 * v2.X2 - v1.X2 * v2.X1);
};
// Skalar- Division
Vektor operator /(Vektor const& v,double const& skalar)
{
return Vektor(v.X1 / skalar, v.X2 / skalar, v.X3 / skalar);
};
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
