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

Maximilian ±0

Hey alex,

laut Tuwel forum reich es bei Bsp 2.4 wenn wir die "Vektoren im Code eingeben", also könnte man sich die Benutzerabfrage sparen. tuwel.tuwien.ac.at/mod/forum/discuss.php?d=35951#p107504

Benjamin-Montgomery ±0

Wann hat er die Setter getter methoden durchgenommen- würde die mir gerne mal anschauen hänge beim 5ten beispiel

Christoph ±0

Hey, hat noch jemand probleme mit dem super befehl? Ich habe mein Bsp noch ein bisschen überarbeite und bBei mir funktioniert der einfach nicht und ich weiß nicht wieso... Hier mein Bsp.2:

import java.util.Scanner;


public class Bsp2_1025147_2 {
    
    public static class Vektor2D{
       public double x;
       public double y;
    
        
        Vektor2D(){
          x=1;
          y=1;
    }
        Vektor2D(double x, double y){
       
            this.x=x;
            this.y=y;
        }
    }
    
    static double Berechnung_Laenge(double x, double y)  {
      double laenge= Math.sqrt(x*x+y*y);
      return laenge;
  }
  
  static double Vektoraddition(double x1, double x2, double x3){
      double y= x1+x2+x3;
      return y;
  }
  
    public static void main(String[] args) {
        
        Vektor2D Vektor1= new Vektor2D();
        Vektor2D Vektor2= new Vektor2D();
        Vektor2D Vektor3= new Vektor2D();
        
        Scanner sc = new Scanner(System.in);

        System.out.println("Geben Sie die x Koordinaten des ersten Vektors ein:");
        Vektor1.x = sc.nextDouble();
        System.out.println("Geben Sie die y Kooridnate des ersten Vektors ein:");
        Vektor1.y = sc.nextDouble();
        System.out.println("Geben Sie die x Kooridante des zweiten Vektors ein:");
        Vektor2.x = sc.nextDouble();
        System.out.println("Geben Sie die y Kooridante des zweiten Vektors ein:");
        Vektor2.y = sc.nextDouble();
        System.out.println("Geben Sue die x Kooridinate des dritten Vektors ein:");
        Vektor3.x = sc.nextDouble();
        System.out.println("Geben Sie die y Kooridnate des dritten Vektors ein:");
        Vektor3.y = sc.nextDouble();
        
        System.out.println("Was wollen Sie berechnen?");
        System.out.println("einzelne Längen der Vektoren - 1");
        System.out.println("Vektoraddition - 2");
        System.out.println("Gesamtlänge der Vektoren - 3");
        int Eingabe = sc.nextInt();

        switch (Eingabe) {

            case 1:
                System.out.println("Länge Vektor 1: " + Berechnung_Laenge(Vektor1.x, Vektor1.y));
                System.out.println("Länge Vektor 2: " + Berechnung_Laenge(Vektor2.x, Vektor2.y));
                System.out.println("Länge Vektor 3: " + Berechnung_Laenge(Vektor3.x, Vektor3.y));
                break;

            case 2:
                System.out.println("Die Summe der Vektoren lautet: "
                        + Vektoraddition(Vektor1.x, Vektor2.x, Vektor3.x) + "|"
                        + Vektoraddition(Vektor1.y, Vektor2.y, Vektor3.y));
                break;

            case 3:
                System.out.println("Die Gesamtlänge der Vektoren beträgt:"
                        + (Berechnung_Laenge(Vektor1.x, Vektor1.y)
                        + Berechnung_Laenge(Vektor2.x, Vektor2.y)
                        + Berechnung_Laenge(Vektor3.x, Vektor3.y)));
                break;
            default:
                System.out.println("Ihre Eingabe wurde nicht erkannt.");
        }

    }
    }
\n~~~
und hier das dritte Bsp.
~~~\n
public class Bsp3_1025147_2 {
    
    public 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~~~
Wolfgang ±0

Die Übergabe stimmt bei dir nicht.

Aufgabenstellung ist es, mittels Konstruktor ein zweites Objekt zu übergeben, du übergibst aber die Werte eines Objekts.

Klara ±0

@Kiri: ich glaube du hast einen fehler beim dritten beispiel, oder?

netbeans nimmt deinen vektor2d nicht an...

Klara ±0

wie ist es richtig? :)

Christoph ±0

Ich weiß nicht genau was das zu bedeuten hat, heißt das, dass ich die Vektoradittionsmethode ungefähr so umschreiben muss?

public static void Vektoraddition2(Vektor2D v1, Vektor2D v2, Vektor2D v3){
      double x=v1.x+v2.x+v3.x;
      double y=v1.y+v2.y+v3.y;
      System.out.println(x+"|"+y);
  }
\n~~~
Wolfgang ±0

Ich hab es so ähnlich. Wobei ich halt noch ein Objekt erzeuge was dann die Parameter übergibt.

Wie eine 100% richtige Lösung aussieht, so wie es sich die Tutoren vorstellen weiß ich nicht. Ist auch nicht mein Ziel bei der HÜ. Das Programm soll funktionieren und die Anforderungen erfüllen.

Ich hoffe nicht, dass von uns erwartet wird, dass wir perfekte Programme abliefern...

Christoph ±0

@Klara_H wieso nimmt netbeans meinen Vektor2D nicht an? Im 2. Bsp funktioniert eigentlich alles, aber vielleicht sitz ich auch grad voll auf der leitung :/

Ronald ±0

Hallo zusammen,

Vektor3D - wie kann ich auf die vererbten Methoden innerhalb der Klasse zugreifen? Diese müssen ja (vermutlich - die Angabe ist diesmal einfach unmöglich) mitangepasst werden. Weiters ist mir nicht ganz klar, wie man den Konstruktor anpassen muss. Ich bin jetzt irgendwie durch Google und Youtube auf den super() Befehl gestoßen, hab "super(x, y);" in den Konstruktor von Vektor3D geschrieben und siehe da - der Compiler ist zufrieden. Wieso weiß ich aber nicht.

Tobias ±0

Das ist viel zu viel für Bsp1!!!!

Tobias ±0
CODE für Bsp1:

    
public class Bsp1_xxxxxxxxxxx_2 {

   
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        
         System.out.println("Geben sie Länge und Breite ein.");

         float[]x= new float[2];
         x[0]= s.nextFloat();
         x[1]= s.nextFloat();

                 

        float flaeche=Methode1(x);
        System.out.println("Die Fläche beträgt: " + flaeche);
        
        float umfang=Methode2(x);
        System.out.println("Der Umfang beträgt: " + umfang);

    }


        

        
        public static float Methode1(float[]x)    {
        float flaeche;
        flaeche= x[0]*x[1];
        return flaeche;
    }
        
        public static float Methode2(float[] x)   {
        float umfang ;
        umfang = 2 * (x[0]+x[1]);
        return umfang;
        
    }
   }\n~~~

Admin Edit: Ich kanns nur immer wieder sagen, verwendet den [BB-Code](https://studify.com/outgoing?url=http%3A%2F%2Fboards.studify.at%2Fmisc.php%3Fdo%3Dbbcode) "CODE" um euren Quelltext darzustellen! Wichtig für Übersichtlichkeit und Suchfunktion...
Alexander ±0

@Gizarmaluke, sieh dir mal meine Lösungen an, vielleicht hilfts ja.

Ralph ±0

Könntest du noch das 5er hochladen alex, wär super :)

Georg ±0

Moin zusammen,Aufgabe 2 mein code:

 double x,y;
 Vektor2D()
 {
  x =1;
  y = 1;
 }
  public static double Berechnunglänge(double x, double y)
  {
   return Math.sqrt(x*x+y*y);
  }
 public static double Addition(Vektor2D x1, Vektor2D x2, Vektor2D x3)
 {
     Vektor2D h = 
  return Vektor2D h;
 }
 public static void main(String[] args)
 {
  Scanner sc = new Scanner(System.in);
  String wahl;
  Vektor2D V1 = new Vektor2D();
  Vektor2D V2 = new Vektor2D();
  Vektor2D V3 = new Vektor2D();
     
     System.out.println("Geben Sie die X-Koordinate des 1. Vektors ein: ");
     V1.x = sc.nextDouble();
     System.out.println("Geben Sie die Y-Koordinate des 1. Vektors ein: ");
     V1.y = sc.nextDouble();
     System.out.println("Geben Sie die X-Koordinate des 2. Vektors ein: ");
     V2.x = sc.nextDouble();
     System.out.println("Geben Sie die Y-Koordinate des 2. Vektors ein: ");
     V2.y = sc.nextDouble();
     System.out.println("Geben Sie die X-Koordinate des 3. Vektors ein: ");
     V3.x = sc.nextDouble();
     System.out.println("Geben Sie die X-Koordinate des 3. Vektors ein: ");
     V3.y = sc.nextDouble();
     System.out.println("Wählen Sie die gwünschte Rechenoperation: "
                       + "\nLänge der einzlenenVektoren: L"
                       + "\nAddition der 3 Vektoren: A"
                       + "\nLänge des Vektors nach Addition der 3 Vektoren: S");
 wahl = sc.next();
 
 switch(wahl.toLowerCase())
 {
  case "l":System.out.println(
           "Die Länge des 1. Vektors beträgt: " + Berechnunglänge(V1.x, V1.y) +
           "\nDie Länge des 2. Vektors beträgt: " + Berechnunglänge(V2.x, V2.y)+
           "\nDie Länge des 3. Vektors beträgt: " + Berechnunglänge(V3.x,V3.y));
            break;
 case "a": System.out.println("Die Koordinaten des addierten Vektors lauten: "
                                 + Addition(V1, V2, V3) + "|"
                                + Addition(V1.y, V2.y, V3.y));     break;
 case "s": System.out.println("Die Länge der addierten Vektoren betragen: " 
          + Berechnunglänge(Addition(V1.x,V2.x,V3.x),Addition(V1.y,V2.y,V3.y)));
            break;
 default: System.out.println("Falsche Eingabe, Programm wird beendet"); 
          System.exit(0);
 }
 }
}
\n~~~

So, wie man sieht stimmt da einiges nicht und das istmir auch bewusst. der erste ansatz für meine vektoraddition war der wie bei kiri also ich übergebe doubles, aber keine ganzen objekte wie gewünscht. Jetzt hab ich mir überlegt wie man das umgeht und hab diesen code gefunden:
~~~\npublic static void Vektoraddition2(Vektor2D v1, Vektor2D v2, Vektor2D v3){
      double x=v1.x+v2.x+v3.x;
      double y=v1.y+v2.y+v3.y;
      System.out.println(x+"|"+y);
  }\n~~~
allerdings werd ich daraus nicht ganz schlau, wie ich das dann einbauen soll. vor allem möchte ich halt sozusagen ein objekt als return statement haben, wie stell ich das an? so das bei der gesamtlängenberechnung mir kein fehler kompiliert wird?
Sorry, die Kommentarfunktion ist geschlossen.