Erklärungs Prob

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hey, sollen für die Uni ein Pog machen, welches unter anderem die Potenz mit einer Schleife berrechnen sollen. Hab ich auch. Müssen das dann aber beschreiben, wie diese Methode jetzt abläuft. Kann mir da jemand kurz helfen.
Also ich würde das in etwas so machen: i ist 1 und wird anschließend immer um 1 erhöht, ist aber kleiner als y. Komme jetzt aber mit dem Teil "potenz = potenz * x;" net klar. was passiert hier.



Code:
public static int Potenz (){
		Scanner scanner = new Scanner(System.in); 
		
		System.out.println("Bitte geben Sie die Basis ein!"); 
        final int x = (int) scanner.nextDouble(); 
        System.out.println("Bitte geben Sie den Exponenten ein!"); 
        final int y = (int) scanner.nextDouble();
		
		int i;
		int potenz =1;

		for (i=1 ; i <= y ; i = i + 1)
		potenz = potenz * x;

		System.out.println ("Der Exponent von " + x+"^"+y+ " = "+ potenz);
		return potenz;
		}
 
versteh ich nicht... - hast du jetzt das programm gemacht oder nicht? Warum verstehst du dann die Zeile potenz = potenz * x nicht? ich würde die zeile übrigens auch mal einrücken, damit man sieht, dass die zur for-schleife gehört...
 
nee hab die von nem kum pel, deshalb frag ich ja.
wie meinste das mit einrücken
 
:autsch: Ich frage mich gerade, wie Du den Rest des Quelltextes verstehst.

i = i + 1 scheinst Du ja zu verstehen (sonst hättest Du hier Unverständnis geäußert!), aber warum dann nicht potenz = potenz * x?


=> Hinsetzten und Nase in Bücher stecken.

Ark
 
versuch du doch mal die zeile zuerklären

dann sehn wir ja wo es bei dir hackt und können dir helfen
 
hab jetzt mal in meinen Code meine Kommentare geschriebn, so wie ich es deuten würde

Code:
public static int Potenz (){
		Scanner scanner = new Scanner(System.in); 
		
		System.out.println("Bitte geben Sie die Basis ein!"); 
        final int x = (int) scanner.nextDouble(); 
        System.out.println("Bitte geben Sie den Exponenten ein!"); 
        final int y = (int) scanner.nextDouble();
		
		int i;				// Initialisierung von i
		int potenz =1;	    // Initialisierung von potenz mit dem Wert 1

		for (i=1 ; i <= y ; i = i + 1) // i hat den Wert 1 und ist kleiner oder gleich y, i wird berrechnet indem zu i 1 addiert wird
		potenz = potenz * x;	// neue potenz berrechnet sich, indem die alte potenz mit x multipliziert wird 

		System.out.println ("Der Exponent von " + x+"^"+y+ " = "+ potenz);
		return potenz;	// Ausgabe der Potenz
		}
 
Code:
public static int Potenz (){ 
      Scanner scanner = new Scanner(System.in); 
       
      System.out.println("Bitte geben Sie die Basis ein!"); 
        final int basis = (int) scanner.nextDouble(); 
        System.out.println("Bitte geben Sie den Exponenten ein!"); 
        final int exponent = (int) scanner.nextDouble(); 

// Gelöst von jemanden aus java-forum.org

        int potenz = basis;
      for (int i=0 ; i <(exponent-1) ; i ++){ 
          potenz *=potenz ;      
      }
    
      System.out.println ("Der Exponent von " + x+"^"+y+ " = "+ potenz); 
      return potenz;   // Ausgabe der Potenz 
      }

BITTE!!!
 
Also das dürfte Bockmist sein.

Code:
for (int i=0 ; i <(exponent-1) ; i ++){ 
          potenz *=potenz ;      
      }

Auf jeden Fall hat das herzlich wenig mit a^n (also potenzieren) zu tun.
 
Leroy42 hat gesagt.:
Also das dürfte Bockmist sein.

Code:
for (int i=0 ; i <(exponent-1) ; i ++){ 
          potenz *=potenz ;      
      }

Auf jeden Fall hat das herzlich wenig mit a^n (also potenzieren) zu tun.

Wenn ich nicht täusche ist:
x^n = x*x*x*...

oder liege ich da falsch?
 
potenz = 2.

potenz *= potenz ==> potenz == 4
potenz *= potenz ==> potenz == 16
potenz *= potenz ==> potenz == 256
potenz *= potenz ==> potenz == 65536

Also 2^5 == 65536? :autsch:
 
1. Schritt:
(x)*(x)

2. Schritt:
(x*x)*(x*x)

3. Schritt:
(x*x*x*x)*(x*x*x*x)

4. Schritt:
(x*x*x*x*x*x*x*x)*(x*x*x*x*x*x*x*x)

= x^(2^n)
 
Tja, da hat sich ein kleiner Fehler eingeschlichen:
Natürlich sollte es
Code:
 potenz*=basis;
heissen.
Habe eben die Variablen umbenannt und dann hab ich das irgendwie verhauen.
 
danke, also ist das so jetzt richtig

Code:
public static int Potenz (){ 
	      Scanner scanner = new Scanner(System.in); 
	        
	      System.out.println("Bitte geben Sie die Basis ein!"); 
	        final int basis = (int) scanner.nextDouble(); 
	        System.out.println("Bitte geben Sie den Exponenten ein!"); 
	        final int exponent = (int) scanner.nextDouble(); 

	     int potenz = basis; 
	      for (int i=0 ; i <(exponent-1) ; i ++){ 
	          potenz *=basis ;      
	      } 
	    
	      System.out.println ("Der Exponent von " + basis +"^"+exponent+ " = "+ potenz); 
	      return potenz;   // Ausgabe der Potenz 
	      }
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben