Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Übungsblatt 4, Rechnerübung 7
Hier meine Lösung zu dieser Aufgabe. Ist in manchen Punkten etwas umständlich denke ich, aber ich kanns net besser. Bin froh über jede Optimierung. :-/
public class Vektor
{
private double komponenten[];
public static void main(String args[])
{
Vektor vektor1 = new Vektor(3);
Vektor vektor2 = new Vektor(3);
vektor1.komponenten[0]=1;
vektor1.komponenten[1]=2;
vektor1.komponenten[2]=3;
vektor2.komponenten[0]=5;
vektor2.komponenten[1]=6;
vektor2.komponenten[2]=3;
System.out.print("Vektor1: ");
System.out.println(toString(vektor1));
System.out.print("Vektor2: ");
System.out.println(toString(vektor2));
System.out.print("Summer der Vektoren: ");
System.out.println(toString(add(vektor1,vektor2)));
System.out.println("Betrag von Vektor1: "+betrag(vektor1));
System.out.println("Betrag von Vektor2: "+betrag(vektor2));
}
public Vektor (int length)
{
if (length > 0)
komponenten = new double[length];
else
komponenten = null;
}
public void setKoordinate(int i, double wert)
{
komponenten[i]=wert;
}
public static Vektor add (Vektor v1, Vektor v2)
{
if (v1.komponenten.length != v2.komponenten.length)
{
System.out.println("Vektoren haben unterschiedliche Längen.");
return null;
}
else
{
Vektor v3 = new Vektor(v1.komponenten.length);
for (int k=0;k < v1.komponenten.length; k++)
{
v3.komponenten[k]=v1.komponenten[k]+v2.komponenten[k];
}
return v3;
}
}
public static double betrag (Vektor v1)
{
double wert=0;
for (int k=0;k<v1.komponenten.length;k++)
{
wert=wert + (v1.komponenten[k]*v1.komponenten[k]);
}
return Math.sqrt(wert);
}
static public String toString(Vektor v1)
{
for (int k=0;k < v1.komponenten.length;k++)
{
System.out.print(v1.komponenten[k]+"/");
}
return "";
}
}
hier is mal meine Lösung:
class Vektor
{
private double komponenten[];
public Vektor(int length) {
if (length > 0) {
komponenten = new double[length];
} else {
komponenten = null;
}
}
private void setKoordinate(int i, double wert) {
if (i < komponenten.length) {
komponenten[i] = wert;
}
}
public static Vektor add(Vektor a, Vektor b) {
if (a.komponenten.length == b.komponenten.length) {
Vektor aPlusB = new Vektor(a.komponenten.length);
for (int i = 0; i < aPlusB.komponenten.length; i++) {
double value = a.komponenten[i] + b.komponenten[i];
aPlusB.setKoordinate(i, value);
}
return aPlusB;
} else {
return null;
}
}
private double betrag() {
double value = 0;
for (int i = 0; i < komponenten.length; i++) {
value += komponenten[i] * komponenten[i];
}
return Math.sqrt(value);
}
public String toString() {
String vektorString = "";
for (int i = 0; i < komponenten.length - 1; i++) {
vektorString += komponenten[i];
vektorString += "/";
}
vektorString += komponenten[komponenten.length - 1];
return vektorString;
}
public static void main(String[] args) {
Vektor v1 = new Vektor(3);
Vektor v2 = new Vektor(3);
Vektor v3 = new Vektor(4);
v1.setKoordinate(0, 1.0);
v1.setKoordinate(1, 2.0);
v1.setKoordinate(2, 3.0);
v1.setKoordinate(3, 4.0);
v1.setKoordinate(4, 5.0);
System.out.println("Vektor1: " + v1.toString());
v2.setKoordinate(0, 4.0);
v2.setKoordinate(1, 5.0);
System.out.println("Vektor2: " + v2.toString());
v3.setKoordinate(0, 7.0);
v3.setKoordinate(1, 8.0);
v3.setKoordinate(2, 9.0);
v3.setKoordinate(3, 10.0);
System.out.println("Vektor3: " + v3.toString());
System.out.println ("\n" + v1.toString() + " + " + v2.toString() +
" = " + add(v1, v3).toString());
}
}