S
Sue84
Gast
Hallo!
Folgende Aufgabe hatte ich zu realisieren:
Ein CAD Programm erwartet, dass der Anwender die Koordinaten von zwei Eckpunkten für jedes von mehreren Rechtecken eingibt. Dabei wird vorausgesetzt, das die Seiten der Rechtecke parallel zur X und Y Achse verlaufen. Die Koordinaten eines jeden Eckpunkts werden als Paar von Ganzzahlen eingegeben, zuerst die X-Koordinate und dann die Y-Koordinate. Der Urprung des Koordinatensystems (0,0) ist die linke obere Ecke, so dass Y abwärts zunimmt und X nach rechts zunimmt.
Das Programm berechnet für jedes Rechteck die Höhe, die Breite und die Fläche. Die zwei eingegebenen Eckpunkte müssen sich diagonal gegenüber liegen (links oben und rechts unten, oder rechts oben und links unten), aber welche Wahl für jedes Rechteck getroffen wird, ist Sache des Anwenders. Der Anwender kann die Eckpunkte in beliebiger Reihenfolge eingeben. Höhe und Breite sind immer positive (das Programm wird seine Berechnungen anpassen müssen, damit das wahr ist.)
Das Programm wird sanft beendet, wenn der Anwender Eckpunkte eingibt, die nicht die eines Rechtecks sein können (entweder die Höhe ist 0, die Breite ist 0 oder beide.)
Diese Aufgabe ist eine Übungsaufgabe zu "Überwachungsgesteuerten Schleifen".
Hier mein Programm:
Es läuft so, aber ist das auch guter Programmierstil oder kann man das Programm auch einfacher / besser schreiben?
Über jede Antwort wäre ich sehr dankbar!
MfG Sue
Folgende Aufgabe hatte ich zu realisieren:
Ein CAD Programm erwartet, dass der Anwender die Koordinaten von zwei Eckpunkten für jedes von mehreren Rechtecken eingibt. Dabei wird vorausgesetzt, das die Seiten der Rechtecke parallel zur X und Y Achse verlaufen. Die Koordinaten eines jeden Eckpunkts werden als Paar von Ganzzahlen eingegeben, zuerst die X-Koordinate und dann die Y-Koordinate. Der Urprung des Koordinatensystems (0,0) ist die linke obere Ecke, so dass Y abwärts zunimmt und X nach rechts zunimmt.
Das Programm berechnet für jedes Rechteck die Höhe, die Breite und die Fläche. Die zwei eingegebenen Eckpunkte müssen sich diagonal gegenüber liegen (links oben und rechts unten, oder rechts oben und links unten), aber welche Wahl für jedes Rechteck getroffen wird, ist Sache des Anwenders. Der Anwender kann die Eckpunkte in beliebiger Reihenfolge eingeben. Höhe und Breite sind immer positive (das Programm wird seine Berechnungen anpassen müssen, damit das wahr ist.)
Das Programm wird sanft beendet, wenn der Anwender Eckpunkte eingibt, die nicht die eines Rechtecks sein können (entweder die Höhe ist 0, die Breite ist 0 oder beide.)
Diese Aufgabe ist eine Übungsaufgabe zu "Überwachungsgesteuerten Schleifen".
Hier mein Programm:
Code:
import java.io.*;
class FlaecheRechtecke
{
public static void main (String[] args) throws IOException
{
BufferedReader stdin =
new BufferedReader (new InputStreamReader (System.in));
String inputData;
int x1, y1, x2, y2, breite, hoehe, flaeche = 0;
System.out.println("CAD Programm");
System.out.println("Erster Eckpunkt X-Koordinate:");
inputData = stdin.readLine();
x1 = Integer.parseInt (inputData);
System.out.println("Erster Eckpunkt Y-Koordinate:");
inputData = stdin.readLine();
y1 = Integer.parseInt (inputData);
System.out.println("Zweiter Eckpunkt X-Koordinate:");
inputData = stdin.readLine();
x2 = Integer.parseInt (inputData);
System.out.println("Zweiter Eckpunkt Y-Koordinate:");
inputData = stdin.readLine();
y2 = Integer.parseInt (inputData);
if (x2 > x1)
breite = x2 - x1;
else if (x1 > x2)
breite = x1 - x2;
else breite = 0;
if (y2 > y1)
hoehe = y2 - y1;
else if (y1 > y2)
hoehe = y1 - y2;
else hoehe = 0;
while ( hoehe != 0 || breite != 0)
{
flaeche = hoehe * breite;
System.out.println("Breite: " + breite + " Hoehe: " + hoehe +
" Flaeche: " + flaeche);
System.out.println("Erster Eckpunkt X-Koordinate:");
inputData = stdin.readLine();
x1 = Integer.parseInt (inputData);
System.out.println("Erster Eckpunkt Y-Koordinate:");
inputData = stdin.readLine();
y1 = Integer.parseInt (inputData);
System.out.println("Zweiter Eckpunkt X-Koordinate:");
inputData = stdin.readLine();
x2 = Integer.parseInt (inputData);
System.out.println("Zweiter Eckpunkt Y-Koordinate:");
inputData = stdin.readLine();
y2 = Integer.parseInt (inputData);
if (x2 > x1)
breite = x2 - x1;
else if (x1 > x2)
breite = x1 - x2;
else breite = 0;
if (y2 > y1)
hoehe = y2 - y1;
else if (y1 > y2)
hoehe = y1 - y2;
else hoehe = 0;
}
flaeche = hoehe * breite;
System.out.println("Breite: " + breite + " Hoehe: " + hoehe +
" Flaeche: " + flaeche);
System.out.println("Fertig!");
}
}
Es läuft so, aber ist das auch guter Programmierstil oder kann man das Programm auch einfacher / besser schreiben?
Über jede Antwort wäre ich sehr dankbar!
MfG Sue