C# :: Aufgabe #314 :: Lösung #1

1 Lösung Lösung öffentlich
#314

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) - 29.04.2020 um 16:54 Uhr
NET Core 3.x

Quellcode ausblenden C#-Code
using System;

namespace Vektoren
{
    class Program
    {
        static void Main(string[] args)
        {
            var v1 = new Vektor(3, 4, 5);
            var v2 = new Vektor(7, 5, 1);
            
            var summe = v1 + v2;
            Console.WriteLine(summe);

            var differenz = v2 - v1;
            Console.WriteLine(differenz);

            var skalar = 3 * v1;
            Console.WriteLine(skalar);

            var produkt = v1 * v2;
            Console.WriteLine(produkt);

            var kreuzprodukt = v1 / v2;
            Console.WriteLine(kreuzprodukt);

            var vergleich = v1.Equals(v2);
            Console.WriteLine(vergleich);
        }
    }

    class Vektor
    {
        public Vektor(double x1, double x2, double x3) => (X1, X2, X3) = (x1, x2, x3);
    
        public (double, double, double) Display => (X1, X2, X3);
        private double X1 { get; }
        private double X2 { get; }
        private double X3 { get; }

        public override bool Equals(object obj) => obj is Vektor vektor &&
                   Display.Equals(vektor.Display) &&
                   X1 == vektor.X1 &&
                   X2 == vektor.X2 &&
                   X3 == vektor.X3;

        public override int GetHashCode() => HashCode.Combine(Display, X1, X2, X3);

        public static Vektor operator +(Vektor v1, Vektor v2) => new Vektor(v1.X1 + v2.X1, v1.X2 + v2.X2, v1.X3 + v2.X3);

        public static Vektor operator -(Vektor v1, Vektor v2) => new Vektor(v1.X1 - v2.X1, v1.X2 - v2.X2, v1.X3 - v2.X3);

        public static Vektor operator *(double skalar, Vektor v) => new Vektor(v.X1 * skalar, v.X2 * skalar, v.X3 * skalar);

        public static Vektor operator /(Vektor v1, Vektor v2) => new 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);

        public static double operator *(Vektor v1, Vektor v2) => v1.X1 * v2.X1 + v1.X2 * v2.X2 + v1.X3 * v2.X3;

        public static bool operator ==(Vektor v1, Vektor v2) => v1.X1 == v2.X1 && v1.X2 == v2.X2 && v1.X3 == v2.X3;

        public static bool operator !=(Vektor v1, Vektor v2) => v1.X1 != v2.X1 || v1.X2 != v2.X2 || v1.X3 != v2.X3;

        public static implicit operator string(Vektor v) => v.Display.ToString();
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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