Euklid < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 20:20 Sa 06.11.2004 | Autor: | mausi |
Hallo ich soll das hier so implementieren
Schreiben Sie ein Programm das die folgende verbale Besc reibung des Euklidschen Algorithmus
implementiert:
Seien a,b zwei natürliche Zahlen,von denen der größte gemeinsame Teiler(ggT)gesucht wird.
Seien z1 und z2 zwei natürlichzahlige Hilfsgrößen.
1.Weise den größeren Wert von a und b der Variablen z1 und den kleineren Wert der Variablen z2
zu.
2.Bestimme den Rest der ganzzahligen Division von z1 durch z2.
3.So lange der Rest ungleich Null ist,führe aus:
1.Weise z1 den Wert z2 zu
2.Weise z2 den Wert des Restes zu
3.Bestimme den Rest der ganzzahligen Division von z1 durch z2
andernfalls gehe zu 4.
4.z2 enthält das gesuchte Ergebnis -->Stop
so nun mal mein anfang aber er zeigt mir fehler warum?
import dssz.io.stdin;
/**
* @version <1>
* @author <>
*/
public class Euklid {
public static void main (String[] args) {
// Eingabestrom von der Konsole
stdin in = new stdin ();
// Hilfsvariablen
int z1,z2,r;
// Einlesen der ersten Zahl
int a = in.getPosInt ("Bitte geben sie die erste natürliche Zahl ein:"),
// Einlesen der zweiten Zahl
b = in.getPosInt ("Bitte geben sie die zweite natürliche Zahl ein:");
if (a >b) {
z1 = a;a = b; z2 = b;
}
do {
r = z1 % z2 ;
z1 = z2;
z2 = r;
} //do
while (r != 0);
System.out.println(" ggT = " + a);
} //main
}//class
erste frage habe ich schon nen richtigen anfang???
und warum kommt als fehler
Euklid.java:29: variable z1 might not have been initialized
r = z1 % z2 ;
^
Euklid.java:29: variable z2 might not have been initialized
r = z1 % z2 ;
jemand ne idee???
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:59 Sa 06.11.2004 | Autor: | mausi |
hab die lösung gefunden juhu
class Euklid
{
public static void main(String[] args)
{
int a, b, z1, z2, r;
a=36;
b=162;
if (a<b)
{
z2 = a ;
z1 = b;
}
else
{
z1 = a;
z2 = b;
}
r = z1 % z2;
while (r!=0)
{
z1 = z2;
z2 = r;
r = z1 % z2;
}
System.out.println("Der GGT von "+ a+ " und "+b+" ist "+ z2);
}
}
|
|
|
|
|
Hallo Mausi,
bei deiner Lösung kann man ja die Zahlen a und b nicht mehr eingeben.
Vielleicht solltest du deine zwei Versionen mal kombinieren und bei der ursprünglichen Version die Variablen a und b vor dem Einlesen schon deklarieren (definieren?).
Ich kann Java zwar nicht ausstehen und hab nahezu Null Programmiererfahrung in dieser Sprache, aber vielleicht kam deine Fehlermeldung, weil du durch den Ausdruck z1=a das nicht genauer spezifizierte Objekt a der Zahl z1 zugewiesen hattest.
Ersetze also die Zeile
int z1, z2, r;
durch
int z1, z2, r, a, b;
und die Fehlermeldung sollte verschwinden.
An alle Java-Cracks:
Bitte mich nicht schimpfen, wenn das totaler Schwachsinn ist. Ich bin doch nur ein einfacher C-Programmierer, d.h. ich ziele mit Ziegern auf alles, was nicht bis drei auf den Bäumen ist.
Korrektur: Ich ziele natürlich nicht mit Ziegern oder gar Ziegen, sondern mit ZEIGERN.
Hugo
|
|
|
|