8. Übung - oth-regensburg.de

January 25, 2018 | Author: Anonymous | Category: Ingenieurwissenschaften, Informatik, Java
Share Embed Donate


Short Description

Download 8. Übung - oth-regensburg.de...

Description

Programmieren in Java

8. Übung Lösungen 1. Aufgabe a) /** * @author Christine Niebler */ public class Complex { private double real; private double imaginaer; // Konstruktoren public Complex() { real=0.0; imaginaer=0.0; } public Complex(double real, double imaginaer) { this.real = real; this.imaginaer = imaginaer; } // Zugriff Realteil public double real() { return real; } // Zugriff Imaginaerteil public double imaginaer() { return imaginaer; } // Betrag der komplexen Zahl, die diese Methode aufruft public double betrag() { return Math.sqrt(real * real + imaginaer * imaginaer); } // Addition 2er komplexer Zahlen (aufrufende Instanz // und uebergebene komplexe Zahl) public Complex plus(Complex z) { return new Complex(real+z.real, imaginaer+z.imaginaer); } // Subtraktion 2er komplexer Zahlen // (aufrufende Instanz minus uebergebene // komplexe Zahl) public Complex minus(Complex z) { return new Complex(real-z.real, imaginaer-z.imaginaer); }

-1-

Programmieren in Java // Multiplikation 2er komplexer Zahlen (aufrufende Instanz // multipliziert mit uebergebener komplexer Zahl) public Complex mal(Complex z) { return new Complex(real * z.real - imaginaer * z.imaginaer, real * z.imaginaer + imaginaer * z.real); } // Multiplikation der aufrufenden Instanz // (komplexe Zahl mit uebergebener "double"-Zahl) public Complex mal(double x) { return new Complex(real * x, imaginaer * x); } // Division 2er komplexer Zahlen (aufrufende Instanz // geteilt durch uebergebene komplexe Zahl) public Complex teilenDurch(Complex z) { double rz = z.betrag(); return new Complex((real * z.real + imaginaer * z.imaginaer) / (rz * rz), (imaginaer * z.real - real * z.imaginaer) / (rz * rz)); }

}

// Ausgabe komplexe Zahl public String toString() { if (imaginaer >= 0) return (String.valueOf(real) + " + " + String.valueOf(imaginaer) + "i"); else return (String.valueOf(real) + " - " + String.valueOf(-imaginaer) + "i"); }

-2-

Programmieren in Java b) /** * @author Christine Niebler */ public class ComplexTest { public static void main(String[] args) { Complex u, v, w, z; u = new Complex(1,2); System.out.println("u: " + u); v = new Complex(3,-4.5); System.out.println("v: " + v); //Realteil von u System.out.println("Realteil von u: " + u.real()); //Imaginaerteil von u System.out.println("Imaginaerteil von u: " + u.imaginaer()); //Betrag von u System.out.println("|u|: " + u.betrag()); // Addiere u und v z = v.plus(u); System.out.println("v + u: " + z); // Subtraktion u - v z = u.minus(v); System.out.println("u - v: " + z); // Multiplikation u * v z = u.mal(v); System.out.println("u * v: " + z); // Multiplikation v * u z = v.mal(u); System.out.println("v * u: " + z); // Multiplikation mit einer Gleitpunktzahl double x = 5.1; z = v.mal(x); System.out.println("v * x: " + z); // Teilen u durch v z = u.teilenDurch(v); System.out.println("u / v: " + z);

}

}

// Teilen v durch u z = v.teilenDurch(u); System.out.println("v / u: " + z);

-3-

Programmieren in Java 2. Aufgabe a) /** * @author Christine Niebler */ public class Rational { private long num; private long den;

// Numerator (Zaehler) // Denominator (Nenner)

// Default-Konstruktor public Rational() { num = 1; den = 1; } // Konstruktor zur Ueberfuehrung einer // double-Zahl in einen Bruch public Rational(double x) { double wert1; double wert2;

}

//Verschieben des Dezimalpunkts um 8 Stellen nach rechts wert1 = 100000000L * x; //Verschieben des Dezimalpunkts um 7 Stellen nach rechts wert2 = 10000000L * x; //wert1 - wert2 = 90000000 * x //Abschneiden zu einer "long"-Zahl, Entfernen des gebrochenen Teils //Approximation von x durch Numerator/90000000 num = (long) (wert1 - wert2); den = 90000000L; //Reduzieren reduzieren();

// Konstruktor zur Initialisierung einer gebrochenen Zahl // aus dem uebergebenen Zaehler bzw. Nenner public Rational(long num, long den) { this.num = num; this.den = den; if (den == 0) { System.out.println("Ein Null-Denominator ist falsch"); System.out.println("Denominator wird auf 1 gesetzt"); this.den = 1; } } private long ggT(long m, long n) { long rest = m % n; while (rest > 0) { m = n; n = rest; rest = m % n; } return n; } // Addition 2er rationaler Zahlen (aufrufende Instanz // und uebergebene rationale Zahl) public Rational plus(Rational r) { return new Rational(num * r.den + den * r.num, den * r.den); }

-4-

Programmieren in Java // Subtraktion 2er rationaler Zahlen (aufrufende Instanz // minus uebergebene rationale Zahl) public Rational minus(Rational r) { return new Rational(num * r.den - den * r.num, den * r.den); } // Multiplikation 2er rationaler Zahlen (aufrufende Instanz // multipliziert mit uebergebener rationaler Zahl) public Rational mal(Rational r) { return new Rational(num * r.num, den * r.den); } // Division 2er rationaler Zahlen (aufrufende Instanz // geteilt durch uebergebene rationale Zahl) public Rational teilenDurch(Rational r) { Rational temp = new Rational(num * r.den, den * r.num); return temp; } // die vorliegende Instanz soll weitgehend // auf kleinstmoegliche Groessen reduziert // werden, z.B. Teilen durch gemeinsame // Vielfache von Zaehler und Nenner public void reduzieren() { long teiler; long absnum; // Betrag des Zaehlers absnum = (num 1) { num /= teiler; den /= teiler;

// Ausgabe rationale Zahl public String toString() { return String.valueOf(num) + "/" + String.valueOf(den); }

-5-

Programmieren in Java b) /** * @author Christine Niebler */ public class RationalTest { public static void main(String args[]) { System.out.println("Approximation Double-Zahl in rationale Zahl"); double d = 0.75; Rational v = new Rational(d); System.out.println("v: " + v); System.out.println("Erzeugen einer rationalen Zahl"); Rational u = new Rational(2, 3); System.out.println("u: " + u); Rational z = u.plus(v); System.out.println("u + v: " + z); z = u.minus(v); System.out.println("u - v: " + z); z = v.minus(u); System.out.println("v - u: " + z); z = u.mal(v); System.out.println("u * v: " + z); z = u.teilenDurch(v); System.out.println("u / v: " + z);

}

}

z = v.teilenDurch(u); System.out.println("v / u: " + z);

3. Aufgabe /** * @author Christine Niebler */ public class Turtle { // Instanzvariable private double turtleR, turtleX, turtleY, turtleTheta; // Konstruktoren public Turtle() { this(0.0,0.0,100,0); } public Turtle(double turtleX, double turtleY, double turtleR, double turtleTheta) { this.turtleX=turtleX; this.turtleY=turtleY; this.turtleR=turtleR; this.turtleTheta=turtleTheta; }

-6-

Programmieren in Java // Instanzmethoden public double getTurtleX() { return turtleX; } public void setTurtleX(double turtleX) { this.turtleX = turtleX; } public double getTurtleY() { return turtleY; } public void setTurtleY(double turtleY) { this.turtleY = turtleY; } public double getTurtleR() { return turtleR; } public void setTurtleR(double turtleR) { this.turtleR = turtleR; } public double getTurtleTheta() { return turtleTheta; } public void setTurtleTheta(double turtleTheta) { this.turtleTheta = turtleTheta; } public void schritt() { turtleX += turtleR * Math.cos(turtleTheta*Math.PI/180); turtleY += turtleR * Math.sin(turtleTheta*Math.PI/180); }

}

public void wende(double winkel) { turtleTheta += winkel; }

-7-

Programmieren in Java a) import java.awt.*; import java.applet.*; public class Vieleck extends Applet { // Turtle-Objekt Turtle turtle; // Abmessung des Fensters Dimension d; // Anzahl der Ecken /* int eckenZahl = 12; */ int eckenZahl = 3; public void init() { d = getSize(); // turtle = new Turtle(d.width/2-25,3*d.height/4,100,0); turtle = new Turtle(d.width/4,3*d.height/4,200,0); }

}

public void paint(Graphics g) { double xAlt; double yAlt; g.setColor(Color.yellow); g.fillRect(0,0,d.width-1,d.height-1); g.setColor(Color.black); for (int i = 0; i < eckenZahl; i++) { xAlt = turtle.getTurtleX(); yAlt = turtle.getTurtleY(); turtle.schritt(); g.drawLine((int) xAlt, (int) yAlt, (int) turtle.getTurtleX(), (int) turtle.getTurtleY()); turtle.wende(-360/eckenZahl); } }

1. Turtle-Anwendung

-8-

Programmieren in Java b) import java.awt.*; import java.applet.*; public class Quadratrosette extends Applet { // Turtle-Objekt Turtle turtle; // Abmessung des Fensters Dimension d; public void init() { d = getSize(); turtle = new Turtle(d.width/2,d.height/2,100,0); } public void paint(Graphics g) { g.setColor(Color.yellow); g.fillRect(0,0,d.width-1,d.height-1); for (int i = 0; i < 36; i++) { zeichneQuadrat(g); turtle.wende(10); } }

}

public void zeichneQuadrat(Graphics g) { g.setColor(Color.black); for (int i = 0; i < 4; i++) { double xAlt = turtle.getTurtleX(); double yAlt = turtle.getTurtleY(); turtle.schritt(); g.drawLine((int) xAlt, (int) yAlt, (int) turtle.getTurtleX(), (int) turtle.getTurtleY()); turtle.wende(90); } }

2. Turtle-Aufgabe

-9-

View more...

Comments

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF