Forum / Grundlagen des Programmierens / 2. Hausübung
2. Hausübung
Hallo Leute!
Hat sich von euch schon jemand die Bsp aus dem Rep angschaut??? Soweit ich weiß hat der Tutor gemeint dass er diese mit Kommentaren versieht um diese verständlicher zu machen, oder irre ich mich???
mfg
In diesem Beitrag dürfte das Bsp 2.2 ohne get und set richtig dargestellt sein. Ich denke nur, dass Vektor2D und Bsp2_xxxxxxx_2 getrennte Klassen sein sollten und du dann Vektor2D in Bsp2 aufrufst?!
Die Angabe ist so verwirrend...
Ja ist korrekt.
Zwei Klassen. Eine Vektor2D.class und eine Bsp2_XXXXX_2.class . Ob beide in einer Datei sind oder jeweils eine ist jedem selbst überlassen.
Getter und Setter hab ich auch nur in bsp 2.5, ist wie schon erwähnt bei den anderen nicht gefragt.
wie funktioniert das mit dem punkt p = new punkt usw.. ich versteh das nicht ganz. bzw für was wird das genau benötigt? damit ich bei bsp 3 die vektor2d klasse "einlesen" kann... ? danke ;)
So.. vererbungs link durchgelesen.. bzw. durchsucht.. aber nicht fündig geworden.... also.. wenn ich "class Vektor3D extends Vektor2D {" erstelle, was passiert dann mit den Methoden? kann ich die Methode "Vektor2D Vektoraddition(Vektor2D Vektor2) {" irgendwie um die z. koordinate erweitern? wenn ja wie? kleiner tipp?
hab selbes problem, ist es möglich das ich die methoden aus vektor2D um die variable z erweiter, ohne das ich die methoden in vektor3D neuschreiben muss? programm sieht aktuell so aus:
public void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String wahl;
Vektor3D V1_ = new Vektor3D();
Vektor3D V2_ = new Vektor3D();
Vektor3D V3_ = new Vektor3D();
Vektor3D Hilfsobjekt2 = new Vektor3D();
System.out.print("Es folgt die Koordinatenabfrage des 1. Vektors: "
+ "\nX-Koordinate: ");
V1_.x = sc.nextDouble();
System.out.print("Y-Koordinate: ");
V1_.y = sc.nextDouble();
System.out.print("Z-Koordinate: ");
V1_.z = sc.nextDouble();
System.out.print("Es folgt die Koordinatenabfrage des 2. Vektors: "
+ "\nX-Koordinate: ");
V2_.x = sc.nextDouble();
System.out.print("Y-Koordinate: ");
V2_.y = sc.nextDouble();
System.out.print("Z-Koordinate: ");
V2_.z = sc.nextDouble();
System.out.print("Es folgt die Koordinatenabfrage des 3. Vektors: "
+ "\nX-Koordinate: ");
V3_.x = sc.nextDouble();
System.out.print("Y-Koordinate: ");
V3_.y = sc.nextDouble();
System.out.print("Z-Koordinate: ");
V3_.z = sc.nextDouble();
switch(wahl.toLowerCase())
{
case "l":System.out.println(
"Die Länge des 1. Vektors beträgt: " + V1_.Berechnunglänge()+
"\nDie Länge des 2. Vektors beträgt: " + V2_.Berechnunglänge()+
"\nDie Länge des 3. Vektors beträgt: " + V3_.Berechnunglänge());
break;
case "a": System.out.println("Die Koordinaten des addierten Vektors lauten: "
+ Hilfsobjekt2.Addition(V1_, V2_, V3_).x + "|" +
Hilfsobjekt2.Addition(V1_, V2_, V3_).y + "|" + Hilfsobjekt2.Addition(V1_, V2_, V3_).z); break;
case "s": System.out.println( "Die Länge des addierten Vektors beträgt: " +
Hilfsobjekt2.Berechnunglänge(Hilfsobjekt2.Addition(V1_, V2_, V3_).x ,
Hilfsobjekt2.Addition(V1_, V2_, V3_).y),
Hilfsobjekt2.Berechnunglänge(Hilfsobjekt2.Addition(V1_, V2_, V3_).z));
break;
default: System.out.println("Falsche Eingabe, Programm wird beendet: " );
System.exit(0);
}
}
class Vektor3D extends Vektor2D{
double z;
public Vektor3D()
{
this.z =1;
}
Vektor3D(double _x, double _y, double _z)
{
super(_x,_y);
this.z=_z;
}
\n~~~
wie sag ich jetzt das der bei der in der methode das z hinzufügen muss oder muss ich so wie [hier](https://studify.com/outgoing?url=http%3A%2F%2Fboards.studify.at%2Fthreads%2F515-2012S-2-Haus%25C3%25BCbung%3Fp%3D3526%26%23038%3Bamp%3Bviewfull%3D1%23post3526) die methoden neuschreiben?
hab selbes problem, ist es möglich das ich die methoden aus vektor2D um die variable z erweiter, ohne das ich die methoden in vektor3D neuschreiben muss? programm sieht aktuell so aus:
public void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String wahl;
Vektor3D V1_ = new Vektor3D();
Vektor3D V2_ = new Vektor3D();
Vektor3D V3_ = new Vektor3D();
Vektor3D Hilfsobjekt2 = new Vektor3D();
System.out.print("Es folgt die Koordinatenabfrage des 1. Vektors: "
+ "\nX-Koordinate: ");
V1_.x = sc.nextDouble();
System.out.print("Y-Koordinate: ");
V1_.y = sc.nextDouble();
System.out.print("Z-Koordinate: ");
V1_.z = sc.nextDouble();
System.out.print("Es folgt die Koordinatenabfrage des 2. Vektors: "
+ "\nX-Koordinate: ");
V2_.x = sc.nextDouble();
System.out.print("Y-Koordinate: ");
V2_.y = sc.nextDouble();
System.out.print("Z-Koordinate: ");
V2_.z = sc.nextDouble();
System.out.print("Es folgt die Koordinatenabfrage des 3. Vektors: "
+ "\nX-Koordinate: ");
V3_.x = sc.nextDouble();
System.out.print("Y-Koordinate: ");
V3_.y = sc.nextDouble();
System.out.print("Z-Koordinate: ");
V3_.z = sc.nextDouble();
switch(wahl.toLowerCase())
{
case "l":System.out.println(
"Die Länge des 1. Vektors beträgt: " + V1_.Berechnunglänge()+
"\nDie Länge des 2. Vektors beträgt: " + V2_.Berechnunglänge()+
"\nDie Länge des 3. Vektors beträgt: " + V3_.Berechnunglänge());
break;
case "a": System.out.println("Die Koordinaten des addierten Vektors lauten: "
+ Hilfsobjekt2.Addition(V1_, V2_, V3_).x + "|" +
Hilfsobjekt2.Addition(V1_, V2_, V3_).y + "|" + Hilfsobjekt2.Addition(V1_, V2_, V3_).z); break;
case "s": System.out.println( "Die Länge des addierten Vektors beträgt: " +
Hilfsobjekt2.Berechnunglänge(Hilfsobjekt2.Addition(V1_, V2_, V3_).x ,
Hilfsobjekt2.Addition(V1_, V2_, V3_).y),
Hilfsobjekt2.Berechnunglänge(Hilfsobjekt2.Addition(V1_, V2_, V3_).z));
break;
default: System.out.println("Falsche Eingabe, Programm wird beendet: " );
System.exit(0);
}
}
class Vektor3D extends Vektor2D{
double z;
public Vektor3D()
{
this.z =1;
}
Vektor3D(double _x, double _y, double _z)
{
super(_x,_y);
this.z=_z;
}
\n~~~
wie sag ich jetzt das der bei der in der methode das z hinzufügen muss oder muss ich so wie [hier](https://studify.com/outgoing?url=http%3A%2F%2Fboards.studify.at%2Fthreads%2F515-2012S-2-Haus%25C3%25BCbung%3Fp%3D3526%26%23038%3Bamp%3Bviewfull%3D1%23post3526) die methoden neuschreiben?
Hab grad eine wahre Goldgrube entdeckt ;)
http://boards.studify.at/threads/515-2012S-2-Haus%C3%BCbung?p=3440#post3440
Danke an Alex ;) nach dem musst zwar das ganze BSP neu aufbauen.. aber du lernst find ich einiges dabei ;)
Beispiel 5
Hier wie versprochen noch meine Lösung von Beispiel 2.5!
Hätte noch eine andere mMn "schönere", aber auch etwas kompliziertere - diese Lösung sollte aber die Anforderungen der grottenschlechten Angabe jedenfalls erfüllen :D
Grüße Alex
PS: Meine Bsp. 2.1-2.4 findet ihr hier.
- 5 Downloads Nur für Studenten!
so, hab mir das von dir grad angschaut (die 3er) und hab eine frage, du berechnest ja alles indem du statt 2 variablen einen array erstellst und dem eine größe gibst, die du durch die variable dim festlegst. dadurch kannst du ihn Vektor3D ja einfach die Dim um 1 erhöhen und bist fertig.
Korrigiert mich wenn ich falsch liege, aber wenn mein Vektor2D so aufgebaut ist:
{
double x,y;
Vektor2D()
{
x = y = 1;
}
Vektor2D(double _x, double _y)
{
x = _x;
y = _y;
}
public static double Berechnunglänge(double x, double y)
{
return Math.sqrt(x*x+y*y);
}
public Vektor2D Addition(Vektor2D x1, Vektor2D x2, Vektor2D x3)
{
Vektor2D Vadd = new Vektor2D();
Vadd.x = x1.x + x2.x+ x3.x;
Vadd.y = x1.y + x2.y + x3.y;
return Vadd;
}
}\n~~~
dann müsst ich eigenltich alle methoden in Vektor 3D neuschreiben, weil das programm ja nicht weiß wi ees mit der neuen koordinate z verfahen soll, also wie der das ranaddiert oder? oder gibts eine lösung ohne arrays, wo ich die methoden zur berechnung NICHT neuschreiben muss in Vektor2D.
also kurz gesagt: gibt es eine lösung so wie du sieh hast ohne die verwendung von arrays?
dürfte das Bsp 2.2 ohne get und set richtig dargestellt sein. Ich denke nur, dass Vektor2D und Bsp2_xxxxxxx_2 getrennte Klassen sein sollten und du dann Vektor2D in Bsp2 aufrufst?!
Die Angabe ist so verwirrend...
So.. hab jetzt grad nach alex's hü angepasst mein 2.2 neu geschrieben (ohne get und set)
hoffe es nützt wem ;)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author admin
*/
public class Bsp2_2_1127976_2 {
public static void main(String[] args)
{
Scanner s= new Scanner(System.in);
double[] coordinate=new double[2];
System.out.print("Dieses Programm errechnet Ihnen die Laenge von 3 Vektoren eineln, "
+ "\nund die Laenge der 3 addierten Vektoren!"
+ "\nGeben sie nun die x-Koordinate des 1. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
Vektor2D V1=new Vektor2D(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 2. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
Vektor2D V2=new Vektor2D(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 3. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[0]=s.nextDouble();
Vektor2D V3=new Vektor2D(coordinate);
System.out.println("\n\nLV1= " + V1.Laenge());
System.out.println("LV2= " + V2.Laenge());
System.out.println("LV3= "+V3.Laenge());
System.out.println("LVA= "+(V3.Summe(V1.Summe(V2))).Laenge());
}
}
class Vektor2D {
int dim,i;
double [] Komp;
double sum;
Vektor2D (){
this.dim = 2;
Komp=new double [dim];
for(i=0;i<dim;i++){Komp[i]=1;}
}
Vektor2D(double [] Koord){
this.dim=Koord.length;
Komp=new double [dim];
for(i=0;i<dim;i++){Komp[i]=Koord[i];}
}
Vektor2D Summe(Vektor2D Vektor2){
for(i=0;i<dim;i++){this.Komp[i]=this.Komp[i]+Vektor2.Komp[i];}
return this;
}
double Laenge (){
double Vektorlaenge,Hilfe=0;
for(i=0;i<dim;i++){Hilfe=Hilfe+(Math.pow(this.Komp[i],2));}
Vektorlaenge = Math.sqrt(Hilfe);
return Vektorlaenge;
}
}\n~~~
Beispiel 2.3
~~~\nimport java.util.Scanner;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author admin
*/
public class Bsp2_3_1127976_2 {
public static void main(String[] args)
{
Scanner s= new Scanner(System.in);
double[] coordinate=new double[3];
System.out.print("Dieses Programm errechnet Ihnen die Laenge von 3 Vektoren eineln, "
+ "\nund die Laenge der 3 addierten Vektoren!"
+ "\nGeben sie nun die x-Koordinate des 1. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor2D V1=new Vektor3D(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 2. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor2D V2=new Vektor3D(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 3. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor2D V3=new Vektor3D(coordinate);
System.out.println("\n\nLV1= " + V1.Laenge());
System.out.println("LV2= " + V2.Laenge());
System.out.println("LV3= "+V3.Laenge());
System.out.println("LVA= "+(V3.Summe(V1.Summe(V2))).Laenge());
}
}
class Vektor3D extends Vektor2D{
Vektor3D (){
this.dim=3;
Komp = new double [dim];
for (i=0;i<dim;i++) {this.Komp[i] = 1;}
}
Vektor3D(double [] Koord){
super(Koord);
}
}\n~~~
Und schlussendlich Bsp 2.4
~~~\n
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
//import newpackage.Vektor3D;
//import java.util.ArrayList;
/**
*
* @author admin
*/
public class Bsp2_4_1127976_2 {
public static void main(String[] args)
{
Scanner s= new Scanner(System.in);
double[] coordinate=new double[3];
ArrayList<Vektor3Dcomparable> Liste = new ArrayList<Vektor3Dcomparable>();
System.out.print("Dieses Programm errechnet Ihnen die Laenge von 3 Vektoren eineln, "
+ "\nund die Laenge der 3 addierten Vektoren!"
+ "\nGeben sie nun die x-Koordinate des 1. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor3Dcomparable V1=new Vektor3Dcomparable(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 2. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor3Dcomparable V2=new Vektor3Dcomparable(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 3. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor3Dcomparable V3=new Vektor3Dcomparable(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 4. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor3Dcomparable V4=new Vektor3Dcomparable(coordinate);
System.out.print("\nGeben sie nun die x-Koordinate des 5. Vektors ein: ");
coordinate[0]=s.nextDouble();
System.out.print(" Nun die y-Koordinate: ");
coordinate[1]=s.nextDouble();
System.out.print(" Nun die z-Koordinate: ");
coordinate[2]=s.nextDouble();
Vektor3Dcomparable V5=new Vektor3Dcomparable(coordinate);
Liste.add(V1);
Liste.add(V2);
Liste.add(V3);
Liste.add(V4);
Liste.add(V5);
for(int i=0;i<Liste.size();i++){System.out.println(Liste.get(i).Laenge());}
Collections.sort(Liste);
System.out.println("\n\n\n");
for(int i=0;i<Liste.size();i++){System.out.println(Liste.get(i).Laenge());}
}
}
class Vektor3Dcomparable extends Vektor3D implements Comparable<Vektor3Dcomparable> {
Vektor3Dcomparable (double [] Koord)
{
super(Koord);
}
@Override
public int compareTo(Vektor3Dcomparable o) {
double x=this.Laenge();
double y=o.Laenge();
if((x-y)<0){return 1;}
else if(x-y==0){return 0;}
else{return -1;}
}
}\n~~~
2.2,2.3,2.4 funktionieren bei mir mal alle soweit ;) (d.h. hoffentlich richtig.. wenn fehler entdeckt werden => bitte sagen ;) )
Bin nicht sicher ob das überhaupt verlangt ist. In der Angabe steht ja "drei Vektoren addieren und Gesamtlänge ausgeben". Hab es zwar auch gemacht, aber glaube es ist nicht wirklich verlangt.
Bzgl. Bsp4, da müssen wir nur Vektoren Sortieren nach ihrer Länge. Keine Additionen oder Gesamtlängen ausgeben.
Hab nochmal nachgefragt, weil ich mir bei der Angabe auch nicht sicher war: tuwel.tuwien.ac.at/mod/forum/discuss.php?d=35951#p107901 Ganz unten.
ich meinte damit die 2.2. in martins programm, werden nur längen berechnet aber keine addition durchgeführ tund die ist laut angabe bei 2.2 verlangt
Ja die Addition ist in der Vektor2D.class verlangt und auch notwendig für die Gesamtlänge. Aber bei der Ausgabe in der main steht eben nur "Länge jedes einzelnen Vektors und drei Vektoren addieren und Gesamtlänge ausgeben". Nach meinem Verständnis muss demnach nur die Einzellänge und die Gesamtlänge ausgegeben werden.
Ui, dankeschön, Martin! :DDD
Jetzt hab ich noch eine dumme Frage: length ist ein Eingabe"befehl"? Also, nichts, dass ich irgendwie definieren müsste, meine ich!
Lisa @lies_ly
Wirtschaftsingenieur... · Technische Universit...
also ich hab eben nicht mit den get- und set- Befehlen gearbeitet, aber die waren ja auch nicht gefordert!! Mich würde jetzt eben interessieren, wie das ohne get/set aussieht