C++ :: Aufgabe #287 :: Lösung #1

2 Lösungen Lösungen öffentlich
#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
#1
vote_ok
von JKooP (18090 Punkte) - 30.04.2020 um 17:41 Uhr
CPP_Aufgabe_287_Vektoren.cpp

Quellcode ausblenden 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

Quellcode ausblenden C-Code
#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

Quellcode ausblenden C-Code
#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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2100499

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.