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
So.. hab jetzt oben meinen Beitrag editiert.. leider hat sich 2.2 nochmals geändert um auch 2.3 bzw. 2.4 zu bewerkstelligen.. aber es ist net viel ;) dafür gibts 2.3 und 2.4 oben drauf ;) lg
sagt der der eine main methode in 2.3 schreibt^^ 2.3 verlangt keine main methode, musst also kein psvm schreiben. und in aufgabe 2.4 darfst du dir feste vektoren aussuchen, muss man nicht eingeben. sollst also dir nur 5 vektoren suchen und die sortieren
:D jaja.. die main war zur kontrolle drin obs funktioniert :D die kommt wieder raus ;) und das mit dem eingeben.. is net klar definiert ;) eingetragen werden... (von wem? vom benutzer, oder selbst? xD) ;)
na mich kotz das grad an das programmieren^^ und das mit mann mus ned selbe eintragen hab ich hieraus: link da sagt er ich zitiere: Benutzereingaben sind hierbei gar nicht erforderlich! Einfach im Code die Vektoren definieren, rein in die Liste, ausgeben, sortieren, ausgeben, fertig.
zusätzliche Lösung für Bsp 2.1
hier noch eine Zusatzversion dom Bsp 2.1. Es ist so aufgebaut, wie es von den anderen Bsp verlangt wird. Sprich man greift über die class main auf die berechnungs-class "Rechteck" (in diesem Fall).
Soll als zusätzliche Info dienen kann aber meinetwegen auch kopiert werden. Hab noch eine andere Version :) jedoch könnte es passieren dass es mehrere machen werden weshalb es nur wenig Sinn macht, aber viel Spass damit!
[INDENT]
- 2 Downloads Nur für Studenten!
Der marko... hat zu viel Zeit und sitzt bei dem schönen Wetter daheim und macht Fleißaufgaben :D
Hab in 2.3. auch eine main. Warum.... habs nicht geschaft es anders zu lösen ^^
Mir stinkts jetzt aber auch schon, die letzten Tage nur programmieren... kann das Netbeans schon nicht mehr sehen :D
das könnte man fast annehmen :P aber ich muss gestehn, mit programmieren wird einem nie fad :D
So ich habs jetzt auch ENDLICH(>.<) geschafft zumindest mal 2.2 und 2.3 zu programmieren: und das sogar auf meine eigene Art XD Wens interessiert^^:
import java.util.Scanner;
public class Bsp2_0927431_2 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
double ersterVektor [] = new double [2];
double zweiterVektor [] = new double [2];
double dritterVektor [] = new double [2];
System.out.println("Guten Tag!");
System.out.println("Bitte geben Sie die x-Koordinate des ersten Vektors ein.");
ersterVektor[0] = sc.nextDouble();
System.out.println("Bitte geben Sie die y-Koordinate des ersten Vektors ein.");
ersterVektor[1] = sc.nextDouble();
System.out.println("Bitte geben Sie die x-Koordinate des zweiten Vektors ein.");
zweiterVektor[0] = sc.nextDouble();
System.out.println("Bitte geben Sie die y-Koordinate des zweiten Vektors ein.");
zweiterVektor[1] = sc.nextDouble();
System.out.println("Bitte geben Sie die x-Koordinate des dritten Vektors ein.");
dritterVektor[0] = sc.nextDouble();
System.out.println("Bitte geben Sie die y-Koordinate des dritten Vektors ein.");
dritterVektor[1] = sc.nextDouble();
Vektor2D vektor1 = new Vektor2D (ersterVektor); //Das Programm erstellt ein Objekt mit Namen vektor1 der Klasse Vektor2D
Vektor2D vektor2 = new Vektor2D (zweiterVektor); //Das Programm erstellt ein Objekt mit Namen vektor2 der Klasse Vektor2D
Vektor2D vektor3 = new Vektor2D (dritterVektor); //Das Programm erstellt ein Objekt mit Namen vektor3 der Klasse Vektor2D
Vektor2D vektor4 = new Vektor2D (); //wird für die Vektoraddition benötigt, damit man der Klasse Vektor2D die drei Vektoren die zusammen addiert werden sollen schicken kann(da der Konstruktor der Klasse Vektor2D IMMER die Werte die man ihm angibt erhalten muss)
System.out.println("Die Laenge des ersten Vektors betraegt " + vektor1.vektorLaenge2D() + " Laengeneinheiten."); //gibt die Länge des ersten Vektors aus
System.out.println("Die Laenge des zweiten Vektors betraegt " + vektor2.vektorLaenge2D() + " Laengeneinheiten."); //gibt die Länge des zweiten Vektors aus
System.out.println("Die Laenge des dritten Vektors betraegt " + vektor3.vektorLaenge2D() + " Laengeneinheiten."); //gibt die Länge des dritten Vektors aus
double addierterVektor2D[] = new double[2]; //Jener Vektor den man erhält, wenn man alle drei eingegebenen Vektoren aufeinander addiert
addierterVektor2D = vektor4.addiereVektoren2D(ersterVektor, zweiterVektor, dritterVektor); //Das Programms schickt der Klasse Vektor2D die drei Vektoren die zusammen addiert werden sollen und erhält von dieser das Ergebnis welches im Array addierterVektor gespeichert wird
System.out.println("Die Gesamtlaenge jenes Vektors, welchen man erhält, wenn man die drei eingegebenen Vektoren zusammen addiert, betraegt " + vektor4.gesamtLaenge2D(addierterVektor2D) + " Laengeneinheiten.");
}
}
\n~~~
~~~\n
public class Vektor2D { /
double xKoordinate;
double yKoordinate;
Vektor2D(double vektorErhalten[]) {
xKoordinate = vektorErhalten[0];
yKoordinate = vektorErhalten[1];
}
Vektor2D(){
xKoordinate = 1;
yKoordinate = 1;
}
public double[] addiereVektoren2D(double vektor1[], double vektor2[], double vektor3[]) {
double neuerVektor2D[] = new double[2];
neuerVektor2D[0] = vektor1[0] + vektor2[0] + vektor3[0];
neuerVektor2D[1] = vektor1[1] + vektor2[1] + vektor3[1];
return neuerVektor2D;
}
public double vektorLaenge2D() {
double UnterDerWurzel2D;
double ergebnis;
UnterDerWurzel2D = UnterDerWurzelEinzeln2D();
ergebnis = Math.sqrt(UnterDerWurzel2D);
return ergebnis;
}
public double UnterDerWurzelEinzeln2D() {
double UnterDerWurzelEinzelnAusrechnen2D;
UnterDerWurzelEinzelnAusrechnen2D = xKoordinate * xKoordinate + yKoordinate * yKoordinate;
return UnterDerWurzelEinzelnAusrechnen2D;
}
public double gesamtLaenge2D(double addierterVektor2D[]) {
double UnterDerWurzel2D;
double ergebnis;
UnterDerWurzel2D = UnterDerWurzelGesamt2D(addierterVektor2D);
ergebnis = Math.sqrt(UnterDerWurzel2D);
return ergebnis;
}
public double UnterDerWurzelGesamt2D(double erhaltenerAddierterVektor2D[]) {
double UnterDerWurzelGesamtAusrechnen2D;
UnterDerWurzelGesamtAusrechnen2D = erhaltenerAddierterVektor2D[0] * erhaltenerAddierterVektor2D[0] + erhaltenerAddierterVektor2D[1] * erhaltenerAddierterVektor2D[1];
return UnterDerWurzelGesamtAusrechnen2D;
}
}
\n~~~
~~~\n
import java.util.Scanner;
public class Bsp3_0927431_2 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
double ersterVektor [] = new double [3];
double zweiterVektor [] = new double [3];
double dritterVektor [] = new double [3];
System.out.println("Guten Tag!");
System.out.println("Bitte geben Sie die x-Koordinate des ersten Vektors ein.");
ersterVektor[0] = sc.nextDouble();
System.out.println("Bitte geben Sie die y-Koordinate des ersten Vektors ein.");
ersterVektor[1] = sc.nextDouble();
System.out.println("Bitte geben Sie die z-Koordinate des ersten Vektors ein.");
ersterVektor[2] = sc.nextDouble();
System.out.println("Bitte geben Sie die x-Koordinate des zweiten Vektors ein.");
zweiterVektor[0] = sc.nextDouble();
System.out.println("Bitte geben Sie die y-Koordinate des zweiten Vektors ein.");
zweiterVektor[1] = sc.nextDouble();
System.out.println("Bitte geben Sie die z-Koordinate des zweiten Vektors ein.");
zweiterVektor[2] = sc.nextDouble();
System.out.println("Bitte geben Sie die x-Koordinate des dritten Vektors ein.");
dritterVektor[0] = sc.nextDouble();
System.out.println("Bitte geben Sie die y-Koordinate des dritten Vektors ein.");
dritterVektor[1] = sc.nextDouble();
System.out.println("Bitte geben Sie die z-Koordinate des dritten Vektors ein.");
dritterVektor[2] = sc.nextDouble();
Vektor3D vektor1 = new Vektor3D (ersterVektor);
Vektor3D vektor2 = new Vektor3D (zweiterVektor);
Vektor3D vektor3 = new Vektor3D (dritterVektor);
Vektor3D vektor4 = new Vektor3D ();
System.out.println("Die Laenge des ersten Vektors betraegt " + vektor1.vektorLaenge3D() + " Laengeneinheiten."); //gibt die Länge des ersten Vektors aus
System.out.println("Die Laenge des zweiten Vektors betraegt " + vektor2.vektorLaenge3D() + " Laengeneinheiten."); //gibt die Länge des zweiten Vektors aus
System.out.println("Die Laenge des dritten Vektors betraegt " + vektor3.vektorLaenge3D() + " Laengeneinheiten."); //gibt die Länge des dritten Vektors aus
double addierterVektor3D[] = new double[3];
addierterVektor3D = vektor4.addiereVektoren3D(ersterVektor, zweiterVektor, dritterVektor);
System.out.println("Die Gesamtlaenge jenes Vektors, welchen man erhält, wenn man die drei eingegebenen Vektoren zusammen addiert, betraegt " + vektor4.gesamtLaenge3D(addierterVektor3D) + " Laengeneinheiten.");
}
}
\n~~~
~~~\n
public class Vektor3D extends Vektor2D {
double zKoordinate;
Vektor3D(double vektorErhalten[]) {
xKoordinate = vektorErhalten[0];
yKoordinate = vektorErhalten[1];
zKoordinate = vektorErhalten[2];
}
Vektor3D(){
xKoordinate = 1;
yKoordinate = 1;
zKoordinate = 1;
}
public double[] addiereVektoren3D(double vektor1[], double vektor2[], double vektor3[]) { /
double neuerVektor3D[] = new double[3];
double neuerVektor3Dxy[] = new double[2];
double vektor2D1[] = new double[2];
vektor2D1[0] = vektor1[0];
vektor2D1[1] = vektor1[1];
double vektor2D2[] = new double[2];
vektor2D2[0] = vektor2[0];
vektor2D2[1] = vektor2[1];
double vektor2D3[] = new double[2];
vektor2D3[0] = vektor3[0];
vektor2D3[1] = vektor3[1];
neuerVektor3Dxy = addiereVektoren2D(vektor2D1, vektor2D2, vektor2D3);
neuerVektor3D[0] = neuerVektor3Dxy[0];
neuerVektor3D[1] = neuerVektor3Dxy[1];
neuerVektor3D[2] = vektor1[2] + vektor2[2] + vektor3[2];
return neuerVektor3D;
}
public double vektorLaenge3D() {
double unterDerWurzel3D;
double ergebnis;
unterDerWurzel3D = UnterDerWurzelEinzeln2D() + zKoordinate * zKoordinate;
ergebnis = Math.sqrt(unterDerWurzel3D);
return ergebnis;
}
public double gesamtLaenge3D(double addierterVektor3D[]) {
double unterDerWurzel3D;
double ergebnis;
unterDerWurzel3D = UnterDerWurzelGesamt2D(addierterVektor3D) + addierterVektor3D[2] * addierterVektor3D[2];
ergebnis = Math.sqrt(unterDerWurzel3D);
return ergebnis;
}
}
\n~~~
Sooooo wieder mal eine nicht eindeutige Angabe ftw>.<'
Also was bitte meinen die mit
"Erstellen Sie eine Klasse Vektor3Dcomparable. Diese beinhalted zusätzlich zur
Funktionalität der Klasse Vektor3D das Interface &#8222;comparable&#8220;. Hierdurch sollen die
einzelnen Objekte der Klasse anhand ihrer Länge vergleichbar gemacht werden.
Die main-Methode soll folgendermaßen modifiziert werden:"
Also wollen die nun eine Klasse oder ein Programm??
Weil eine Klasse hat doch keine main methode oO oO oO
Nur Programme haben sowas dachte ich..
die wollen, das du die klasse Vektor3Dcomparable erstellst, diese erbt von Vektor3D und ist comparable. d.h. die erste zeile dor lautet public class Vektor3Dcomparable extends Vektor3D implements Comparable {.. und die klasse XX4_Matrnr... soll dan darauf zugreifen. und die klasse Vektor3DVektor comparable, macht nix andere wie die länge der vektoren zu berechnen und sie zu sortieren, mithilfe von CompareTo funktion. dafür bauchtman dann in der main methode den aufruf Collections.sort(Name deiner Arrayliste);
die wollen, das du die klasse Vektor3Dcomparable erstellst, diese erbt von Vektor3D und ist comparable. d.h. die erste zeile dor lautet public class Vektor3Dcomparable extends Vektor3D implements Comparable {.. und die klasse XX4_Matrnr... soll dan darauf zugreifen. und die klasse Vektor3DVektor comparable, macht nix andere wie die länge der vektoren zu berechnen und sie zu sortieren, mithilfe von CompareTo funktion. dafür bauchtman dann in der main methode den aufruf Collections.sort(Name deiner Arrayliste);
Also auf gut deutsch: Klasse Vektor3Dcomparable erstellen Konstruktor erstellen damit sie auf die Funktionen von Vektor3D zugreifen kann versuchen dass mit dem comparable zu schaffen aber so wie du das beschrieben hast braucht man dann noch ein extra Interface Comparable oder? weil implements greift ja immer auf ein extra Interface zu oder? also müssen wir die Klasse Vektor3Dcomparable, das Interface Comparable und das Programm Bsp4_.... schreiben oder?
Der Befehl "implements Comparable" macht es möglich mittels der compareTo-Methode eine Elemente paarweise miteinander zu vergleichen.
Man muss im Code folgende Utilities laden, damit es funktioniert
import java.util.Collections;
import java.util.List;\n~~~
Dann kann man durch die Collections.sort(Liste); eine Sortierung vornehmen. Wichtig dabei ist es, dass man in der compareTo-Methode einen Vergleichs"methode" hat, die die Längen zweier Objekte miteinander vergleicht.
ich hab beim 5ten bsp a frage.. ich hab nun soweit die unterklassen gemacht, aber ich schaffs irgendwie nicht , dass ich von meiner main zB das 'a' übergeb.
{
System.out.println("Querschnitt angeben:");
Scanner eingabe = new Scanner(System.in);
Balken.qs(eingabe.nextDouble());
}\n~~~
und ~~~\n public void qs(double x)
{
this.a=x;
}\n~~~
das eine is halt in der Bsp5_.._2 und das zweite wäre in meiner class Balken.. allerdings sagt er mir immer: non-static method qs(double) cannot be referrenced froma static context.. wie mach ich das, wenn ich die Balkenclass ja ned als static deklarieren darf? wenn ichs anders schreiben probier.. also ca so: ~~~\n public static double qs(double x)
{
a=x;
}\n~~~ spuckt er den selben fehler aus
Georg @Fieba
Wirtschaftsingenieur... · Technische Universit...
aso ja, ich hab die angabe mal wieder falsch verstanden, die wollen wirklich nur die längen haben ok bin schon still
edit sagt: hab mir jetzt auch mal das programm von alex zu gemüte geführt und folgene frage: die zeile: resc = new double [dim]; in der Klasse Vektor3D ist doch überflüssig? da hier ja eine Vererbung vorliegt, weiß die klasse das bereits du änderst ja nicht. d.h. die klasse weiß resc = new double[dim] ist, und das dim hast du ja schon überschreiben.