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