C++ :: Aufgabe #287
2 Lösungen

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
Lösungen:
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); };

#ifndef VEKTOR_H #define VEKTOR_H using namespace std; class Vektor { public: Vektor(float a = 0, float b = 0, float c = 0); void print_Vektor(); float rAvalue(); float rBvalue(); float rCvalue(); float skalar(Vektor b); void multiplikation(int n); void add(Vektor b); void sub(Vektor b); void product(Vektor a, Vektor b); private: float A; float B; float C; }; #endif // VEKTOR_H

#include <iostream> #include "vektor.h" Vektor::Vektor(float a, float b, float c) { A = a; B = b; C = c; } void Vektor::print_Vektor() { cout << A << endl; cout << B << endl; cout << C << endl; } float Vektor::rAvalue() { return A; } float Vektor::rBvalue() { return B; } float Vektor::rCvalue() { return C; } float Vektor::skalar(Vektor b) { return (A*b.rAvalue()+B*b.rBvalue()+C*b.rCvalue()); } void Vektor::multiplikation(int a) { A = A*a; B = B*a; C = C*a; } void Vektor::add(Vektor b) { A += b.rAvalue(); B += b.rBvalue(); C += b.rCvalue(); } void Vektor::sub(Vektor b) { A -= b.rAvalue(); B -= b.rBvalue(); C -= b.rCvalue(); } void Vektor::product(Vektor a, Vektor b) { A = a.rBvalue()*b.rCvalue() - a.rCvalue()*b.rBvalue(); B = a.rCvalue()*b.rAvalue() - a.rAvalue()*b.rCvalue(); C = a.rAvalue()*b.rBvalue() - a.rBvalue()*b.rAvalue(); }

#include <iostream> #include "vektor.h" using namespace std; int main() { Vektor a(1, 2, 1); Vektor b(3, 4, 5); Vektor c(0, 0, 0); cout<< "Skalarprodukt von Vektor a mit Vektor b" << endl; cout <<a.skalar(b) << endl; cout<< "Vektor a wird mit 4 multipliziert" << endl; a.multiplikation(4); a.print_Vektor(); cout<< "Zum Vektor a wird der Vektor b addiert" << endl; a.add(b); a.print_Vektor(); cout<< "Zum Vektor a wird der Vektor b wieder subtrahiert" << endl; a.sub(b); a.print_Vektor(); cout<< "Das Kreuzprodukt von Vektor a und b" << endl; c.product(a, b); c.print_Vektor(); return 0; }