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

Georg ±0

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.

Martin ±0

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

Martin ±0

Fieba du musst eindeutig fauler werden ;) nicht so viele Fleißaufgaben :D

Georg ±0

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

Martin ±0

: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) ;)

Derya ±0

Fieba ist auch mit nichts zufrieden :D :D :D

Georg ±0

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.

Marko ±0
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]

Wolfgang ±0

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

Marko ±0

das könnte man fast annehmen :P aber ich muss gestehn, mit programmieren wird einem nie fad :D

Dieter ±0

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(&quot;Guten Tag!&quot;);
        System.out.println(&quot;Bitte geben Sie die x-Koordinate des ersten Vektors ein.&quot;);
        ersterVektor[0] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die y-Koordinate des ersten Vektors ein.&quot;);
        ersterVektor[1] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die x-Koordinate des zweiten Vektors ein.&quot;);
        zweiterVektor[0] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die y-Koordinate des zweiten Vektors ein.&quot;);
        zweiterVektor[1] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die x-Koordinate des dritten Vektors ein.&quot;);
        dritterVektor[0] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die y-Koordinate des dritten Vektors ein.&quot;);
        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&uuml;r die Vektoraddition ben&ouml;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(&quot;Die Laenge des ersten Vektors betraegt &quot; + vektor1.vektorLaenge2D() + &quot; Laengeneinheiten.&quot;); //gibt die L&auml;nge des ersten Vektors aus
        System.out.println(&quot;Die Laenge des zweiten Vektors betraegt &quot; + vektor2.vektorLaenge2D() + &quot; Laengeneinheiten.&quot;); //gibt die L&auml;nge des zweiten Vektors aus
        System.out.println(&quot;Die Laenge des dritten Vektors betraegt &quot; + vektor3.vektorLaenge2D() + &quot; Laengeneinheiten.&quot;); //gibt die L&auml;nge des dritten Vektors aus
        
        double addierterVektor2D[] = new double[2]; //Jener Vektor den man erh&auml;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&auml;lt von dieser das Ergebnis welches im Array addierterVektor gespeichert wird
        
        System.out.println(&quot;Die Gesamtlaenge jenes Vektors, welchen man erh&auml;lt, wenn man die drei eingegebenen Vektoren zusammen addiert, betraegt &quot; + vektor4.gesamtLaenge2D(addierterVektor2D) + &quot; Laengeneinheiten.&quot;);
    }
}
\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(&quot;Guten Tag!&quot;);
        System.out.println(&quot;Bitte geben Sie die x-Koordinate des ersten Vektors ein.&quot;);
        ersterVektor[0] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die y-Koordinate des ersten Vektors ein.&quot;);
        ersterVektor[1] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die z-Koordinate des ersten Vektors ein.&quot;);
        ersterVektor[2] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die x-Koordinate des zweiten Vektors ein.&quot;);
        zweiterVektor[0] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die y-Koordinate des zweiten Vektors ein.&quot;);
        zweiterVektor[1] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die z-Koordinate des zweiten Vektors ein.&quot;);
        zweiterVektor[2] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die x-Koordinate des dritten Vektors ein.&quot;);
        dritterVektor[0] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die y-Koordinate des dritten Vektors ein.&quot;);
        dritterVektor[1] = sc.nextDouble();
        System.out.println(&quot;Bitte geben Sie die z-Koordinate des dritten Vektors ein.&quot;);
        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(&quot;Die Laenge des ersten Vektors betraegt &quot; + vektor1.vektorLaenge3D() + &quot; Laengeneinheiten.&quot;); //gibt die L&auml;nge des ersten Vektors aus
        System.out.println(&quot;Die Laenge des zweiten Vektors betraegt &quot; + vektor2.vektorLaenge3D() + &quot; Laengeneinheiten.&quot;); //gibt die L&auml;nge des zweiten Vektors aus
        System.out.println(&quot;Die Laenge des dritten Vektors betraegt &quot; + vektor3.vektorLaenge3D() + &quot; Laengeneinheiten.&quot;); //gibt die L&auml;nge des dritten Vektors aus
        
        double addierterVektor3D[] = new double[3];
        addierterVektor3D = vektor4.addiereVektoren3D(ersterVektor, zweiterVektor, dritterVektor);
        
        System.out.println(&quot;Die Gesamtlaenge jenes Vektors, welchen man erh&auml;lt, wenn man die drei eingegebenen Vektoren zusammen addiert, betraegt &quot; + vektor4.gesamtLaenge3D(addierterVektor3D) + &quot; Laengeneinheiten.&quot;);
    }
}
\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&gt;.&lt;'
Also was bitte meinen die mit 

&quot;Erstellen Sie eine Klasse Vektor3Dcomparable. Diese beinhalted zus&auml;tzlich zur
Funktionalit&auml;t der Klasse Vektor3D das Interface &amp;#8222;comparable&amp;#8220;. Hierdurch sollen die
einzelnen Objekte der Klasse anhand ihrer L&auml;nge vergleichbar gemacht werden.
Die main-Methode soll folgenderma&szlig;en modifiziert werden:&quot;

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..
Georg ±0

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);

Dieter ±0

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?

Wolfgang ±0

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&quot;methode&quot; hat, die die L&auml;ngen zweier Objekte miteinander vergleicht.
Michael ±0

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(&quot;Querschnitt angeben:&quot;);
         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&auml;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
Sorry, die Kommentarfunktion ist geschlossen.