C# :: Aufgabe #314
1 Lösung
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:
NET Core 3.x
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();
}
}
