Aufgabe 0: Größter gemeinsamer Teiler

Antworten
Eduard
Beiträge: 11
Registriert: Fr 24. Okt 2008, 08:48

Aufgabe 0: Größter gemeinsamer Teiler

Beitrag von Eduard »

Für diese Aufgabe bekommt man keine Punkte. Ihr könnt die Aufgabe im Praktomat (https://praktomat.info.uni-karlsruhe.de) einsehen. Für die Eingabe verwende ich die Terminal-Klasse (http://pp.info.uni-karlsruhe.de/lehre/W ... minal.java)

Die Fehlerbehandlung :evil: (Ausnahmen) müssen noch implementiert werden

Code: Alles auswählen

public class GgT {
	
	private static int ggT(int x, int y) {
		while (y != 0) {
			if (x > y) {
				x = x - y;
			} 
			
			else {
				y = y - x;
			}
		}
		return x;
	}

	public static void main(String[] args){
		String eingabezeile; 
		String[] tokens;
		int i, j;
		
		do{
			eingabezeile = Terminal.askString("ggT> ");
			tokens = eingabezeile.split("\\s+");
		
			i = Integer.parseInt(tokens[0]);
			j = Integer.parseInt(tokens[1]);
		
			System.out.println("ggT("+ i + ", " + j + ") = " + ggT(i, j));
			
		}while(!(i == 0 && j==0));
		
		System.out.println("Programmende");
	}
}
Grüße

Eduard
Benutzeravatar
GoukipK
Beiträge: 11
Registriert: So 2. Nov 2008, 23:03
Kontaktdaten:

Re: Aufgabe 0: Größter gemeinsamer Teiler

Beitrag von GoukipK »

So, ich habe mal den Code von Eduard genommen und ihn ein wenig abgeändert, so dass der Praktomat vollstens zufrieden ist.
Ich habe sogar noch die Exceptions eingefügt, die der Praktomat aber nicht prüft. Er sollte wohl, wie in der Beschreibung der Aufgabe, "09" eingeben, gibt aber stattdessen "0_9" ein.
Dadurch kommt es zu keiner Exception beim Test. Deshalb habe ich auch gleich den Fall 'x = 0' in ggT(x,y) eingefügt. Somit schließt der Praktomat den Test erfolgreich ab.
(Bis auf evtl. den "Maximale Zeilenbreite" Test). Kommentare wurden, bis auf die obligatorischen Javadoc Kommentare, weggelassen.

Viel Spaß damit! ;) (Ein Dank geht an Eduard für den Code :beer: )

Code: Alles auswählen

/**
 *  Class: GgT
 */
public final class GgT {
	
	private GgT() {
	}
	
	private static int ggT(int x, int y) {
		if (x == 0) {
			return y;
		}
		
		while (y != 0) {
			if (x > y) {
				x = x - y; 
			} else {
				y = y - x;
			}
		}
		return x;
	}
	/**
	* Method: main	
	* @param args input
	*/
	public static void main(String[] args) {

		String eingabezeile;
		String[] tokens;
		int i = 0;
		int j = 0;
		
		do {
			eingabezeile = Terminal.askString("ggT> ");
			tokens = eingabezeile.split("\\s+");
			try {
				try {
					i = Integer.parseInt(tokens[0]);
					j = Integer.parseInt(tokens[1]);
				
					if (!(i == 0 && j == 0)) {
						Terminal.println("ggT(" + i + ", " + j + ") = " + ggT(i, j));
					}
				} catch (java.lang.ArrayIndexOutOfBoundsException e1) {
					Terminal.println("Error! Zwei Zahlen erwartet.");
				}
			} catch (java.lang.NumberFormatException e2) {
				Terminal.println("Error! Zwei Zahlen erwartet.");
			}	
		} while(!(i == 0 && j == 0));
	} 
} 
Antworten

Zurück zu „Übung“