Java :: Aufgabe #8 :: Lösung #6
6 Lösungen
#8
Euklidischer Algorithmus
Anfänger - Java
von Jurom
- 23.10.2012 um 11:49 Uhr
Erstellen Sie ein Programm, das den größten gemeinsamen Teiler zweier natürlicher Zahlen zurückgibt.
Benutzen Sie hierzu den euklidischen Algorithmus; sowohl den klassischen, als auch den modernen.
Geben Sie zum Vergleich beide Lösungen aus.
Auf ein Exception-Handling kann verzichtet werden.
Beispiele zum Lösungslayout sind beigefügt.
Benutzen Sie hierzu den euklidischen Algorithmus; sowohl den klassischen, als auch den modernen.
Geben Sie zum Vergleich beide Lösungen aus.
Auf ein Exception-Handling kann verzichtet werden.
Beispiele zum Lösungslayout sind beigefügt.
#6
von kollar (340 Punkte)
- 19.12.2019 um 13:13 Uhr
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class EuklidischerAlgorithmus {
public static void main(String[] args) {
FrEuklidischerAlg frEuklidischerAlg = new FrEuklidischerAlg("Euklidischer Algorithmus");
}
}
class FrEuklidischerAlg extends JFrame implements ActionListener {
JLabel lblErsteZahl = new JLabel("erste Zahl: ");
JTextField tfErsteZahl = new JTextField(15);
JPanel pErsteZahl = new JPanel();
JLabel lblZweiteZahl = new JLabel("zweite Zahl: ");
JTextField tfZweiteZahl = new JTextField(15);
JPanel pZweiteZahl = new JPanel();
JButton bModern = new JButton(" Modern ");
JButton bKlassisch = new JButton(" Klassisch ");
JPanel pButton = new JPanel();
JTextArea taAusgabe = new JTextArea(20, 30);
FrEuklidischerAlg(String titel) {
super(titel);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(460, 600);
setLocation(500, 200);
setLayout(new FlowLayout(FlowLayout.RIGHT, 60, 25));
tfErsteZahl.setHorizontalAlignment(JTextField.RIGHT);
tfZweiteZahl.setHorizontalAlignment(JTextField.RIGHT);
taAusgabe.setEditable(false);
taAusgabe.setLineWrap(true);
taAusgabe.setWrapStyleWord(true);
bModern.addActionListener(this);
bModern.setActionCommand("modern");
bKlassisch.addActionListener(this);
bKlassisch.setActionCommand("klassisch");
pErsteZahl.add(lblErsteZahl);
pErsteZahl.add(tfErsteZahl);
pZweiteZahl.add(lblZweiteZahl);
pZweiteZahl.add(tfZweiteZahl);
pButton.add(bModern);
pButton.add(bKlassisch);
add(pErsteZahl);
add(pZweiteZahl);
add(pButton);
add(taAusgabe);
}
public String berechneModern(String stZahl1, String stZahl2) {
String stAusgabe;
StringBuilder sbAusgabe = new StringBuilder();
int rest = 1;
int faktor;
int temp;
try {
int zahl1 = Integer.parseInt(stZahl1);
int zahl2 = Integer.parseInt(stZahl2);
if (zahl1 == 0 || zahl2 == 0) {
stAusgabe = "Es gibt keinen gemeinsamen Teiler";
return stAusgabe;
}
if (zahl2 > zahl1) {
temp = zahl1;
zahl1 = zahl2;
zahl2 = temp;
}
sbAusgabe.append("ggT (" + zahl1 + ", " + zahl2 + ")" + "\n");
do {
faktor = zahl1 / zahl2;
rest = zahl1 % zahl2;
sbAusgabe.append(zahl1 + " = " + faktor + "*" + zahl2 + "+" + rest + "\n");
zahl1 = zahl2;
zahl2 = rest;
} while (rest != 0);
sbAusgabe.append("der größte gemeinsame Teiler: " + zahl1);
stAusgabe = sbAusgabe.toString();
} catch (NumberFormatException e) {
stAusgabe = "Bitte Ganzzahlen eingeben!";
}
return stAusgabe;
}
public String berechneKlassisch(String stZahl1, String stZahl2) {
String stAusgabe;
StringBuilder sbAusgabe = new StringBuilder();
int differenz = 0;
int temp;
try {
int zahl1 = Integer.parseInt(stZahl1);
int zahl2 = Integer.parseInt(stZahl2);
if (zahl1 == 0 || zahl2 == 0) {
stAusgabe = "Es gibt keinen gemeinsamen Teiler";
return stAusgabe;
}
if (zahl2 > zahl1) {
temp = zahl1;
zahl1 = zahl2;
zahl2 = temp;
}
sbAusgabe.append("ggT (" + zahl1 + ", " + zahl2 + ")");
do {
sbAusgabe.append("\n" + zahl1);
differenz = zahl1;
do {
sbAusgabe.append("-" + zahl2);
differenz = differenz - zahl2;
} while (differenz > zahl2);
sbAusgabe.append("=" + differenz);
zahl1 = zahl2;
zahl2 = differenz;
} while (differenz != 0);
sbAusgabe.append("\n" + "der größte gemeinsame Teiler: " + zahl1);
stAusgabe = sbAusgabe.toString();
} catch (NumberFormatException e) {
stAusgabe = "Bitte Ganzzahlen eingeben!";
}
return stAusgabe;
}
@Override
public void actionPerformed(ActionEvent evt) {
if (evt.getActionCommand().equals("modern"))
taAusgabe.setText(berechneModern(tfErsteZahl.getText(), tfZweiteZahl.getText()));
if (evt.getActionCommand().equals("klassisch"))
taAusgabe.setText(berechneKlassisch(tfErsteZahl.getText(), tfZweiteZahl.getText()));
}
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
