Verschachtelte Schleife?

Status
Nicht offen für weitere Antworten.

Riddick007

Mitglied
Hi, stehe hier vor einem Problem, das mich in den Wahnsinn treibt.
Dieses nette Programm berechnet mir den größten gemeinsamen Teiler der eingegebenen Zahl und i=1 bis i=zahl
(z.B. ich gebe 6 ein ,er erechnet: ggt(6,1); ggt(6,2); ggt(6,3); ggt(6,4); ggt(6,5) und ggt(6,6))

nun will ich, dass am ende die eingegebene Zahl um eins erniedrigt wird, anschließend soll mit dieser Zahl dann das ganze Programm durchgegangen werden. (also wenn zahl 6 war, dann soll sie 5 werden und den ganzen vorherigen kram machen ... ggt(5,1) ...ggt(5,6)). so dass ich alle Kombinationsmöglichkeiten durchgehe.

Code:
import AlgoTools.IO;                  //um ein-und ausgabe zu vereinfachen...

public class aufg{
	public static void main(String [] argv){
	
int zahl=0, i=1, fuerzahl=0, fueri=0;

zahl=IO.readInt("zahl eing: ");


fuerzahl=zahl;                          
fueri=i;

		
//-------------------------------------------------	
do{
  while(zahl!=i){                        //Euklid-Algorithmus, um
  if (zahl>i)zahl=zahl-i;                //..GGT von zwei Zahlen zu errechnen
  else i=i-zahl;                         //hier: zahl und i=1, i=2, i=3 ... i=6



  }IO.println("ggt: "+zahl);



fueri++;                               //i=1 um eins erhöhen 
i=fueri;                               // (nun: i=2)
zahl=fuerzahl;                         // zahl bekommt den anfangswert 

}while(fueri<=fuerzahl);              // solange, wie zahl größer als i 
//----------------------------------------------------------



}

}

hat jemand nen plan, wie ich das mache??

danke schonmal!!
 
Code:
import AlgoTools.IO;                  //um ein-und ausgabe zu vereinfachen...

public class aufg{

   public static void main(String [] argv){
        int zahl= IO.readInt("zahl eing: ");
    
        for(int j = zahl; j > 0; j--){
            for(int i = 1; i<= zahl; i++){
                IO.println("ggt: "+ ggt(zahl,i));
            }
        }
    }

    public int ggt(int zahl, int i){
        while(zahl!=i){                        //Euklid-Algorithmus, um
           if (zahl>i)zahl=zahl-i;                //..GGT von zwei Zahlen zu errechnen
            else i=i-zahl;                         //hier: zahl und i=1, i=2, i=3 ... i=6
        }
        return zahl;
    }

}

Versuchs mal so (ungetestet)
 
hey, danke dafür!
jo, muss static sein...

aber nop, so mit zwei public static... haben wir es noch nicht gemacht, sollen wir auch nicht. Wir sind Anfänger und kennen nur Schleifen (do-while, while, for, switch) .

keine anderer Vorschlag?
 
jop, static vergessen

in einer methode wäre das dann (auch wieder ungetestet):

Code:
import AlgoTools.IO;                  //um ein-und ausgabe zu vereinfachen...

public class aufg{

   public static void main(String [] argv){
        int zahl= IO.readInt("zahl eing: ");
   
        for(int j = zahl; j > 0; j--){
            for(int i = 1; i<= zahl; i++){
            
               int zahl1 = zahl;
               int zahl2 = i;
               while(zahl1!=zahl2){                        //Euklid-Algorithmus, um
                  if (zahl1>zahl2)zahl1=zahl1-zahl2;                //..GGT von zwei Zahlen zu errechnen
                  else zahl2=zahl2-zahl1;                         //hier: zahl und i=1, i=2, i=3 ... i=6
               }
               IO.println("ggt: "+ zahl1);
            }
        }
    }
}
 
hmm, er führt die zweite schleife lediglich so oft aus, wie die eingegebene zahl groß ist.

z.b.: 4 führt er den ggt von 4,1 ; 4,2; 4,3; und 4;4 vier mal aus.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben