Potenzieren

T

tanye

Gast
Hey Leutz ,

Hab folgendes Problem : Ich hab ein Programm geschrieben , dass bei Eingabe einer Basis und eines Exponenten , dass Ergebnis berechnet ... Auf 2 verschiedene Wege wobei folgendes gelten soll , d.h. im Prinzip sind die Rechenvorschriften vorgegeben , ich muss das ganze nur implementieren :)

Bildschirmfoto2.png


Ich sehe den Fehler nicht in meinem Programm , kann jmd einen Blick drüber werfen bitte ?

Java:
import javax.swing.JOptionPane;


public class fuenfpunkteins {

	
static int n;
static int a;
static int p=(n/2);	
static int q=((n-1)/2);		
static int z=( ( (int) Math.pow(a,q) ) );

public static int potenz1 (int a , int n){
	
	if(n == 0)
		System.out.print(1);
	
	while (n > 0){    

		
		return (int) (a*Math.pow(a,(n-1)));
		
}
	return 1;

}
public static int potenz2 (int a, int n)	{
	
	if(n == 0)
		System.out.print(1)	;
	
	while (n > 0){
		
		    if((n%2) == 0)	
			
			return (  ( (int) Math.pow(a,p) ) * ( (int) Math.pow(a,p) )  );
			
		    else {

		    	 
			return ( (z*z)*a);  
			
		     } }

	return 1;
}

public static void main (String args[]){
	
	
	
	String s = JOptionPane.showInputDialog("Geben Sie bitte den Exponenten ein : ");
	
	n = Integer.parseInt(s);
	
    String t = JOptionPane.showInputDialog("Geben Sie bitte die Basis ein : ");
	
	a = Integer.parseInt(t);
	
	System.out.println("Ihr Ergebnis auf dem ersten Weg ist : " + potenz1(a, n));

	
	System.out.println("Ihr Ergebnis auf dem zweiten Weg ist : " + potenz2(a, n));
	
}

}

Bei potenz1 kommt immer das richtige Ergebnis raus ... aber potenz2 funktioniert nicht bei 2^5 kommt z.B. 2 raus :D
 
G

Gast2

Gast
Wofür hast du die Schleifen drin? Nach dem ersten durchlauf beendet sich die Methode doch in jedem fall.
Sollst du das ganze rekursiv oder mit schleifen machen?
 
B

bone2

Gast
[c]static int p=(n/2);[/c] man kann doch keine formel in einer int variable speichern
da steht bei der initialisierung
[c]static int p=(0/2);[/c] also p == 0
 

Andi_CH

Top Contributor
An den Algorithmen stimmt gar nichts.

Was willst du? bzw. Woher hast du die?

Ein Verfahren für die Potenz währe

basis ^ exponent = basis * basis * basis ..... exponent mal machen -> loop und *= ;-)

oder rekursiv

Java:
public int potenz(int basis, int exponent) {
   wenn b == 0 ist, 1 zurückgeben
   wenn b > 0 ist, b * potenz(basis, exponent-1) zurückgeben
}

oder gaaanz einfach ;-)

Java:
public int potenz(int basis, int exponent) {
   return Math.pow(basis, potenz);
}

Also denk nochmals über die Algorithmen nach.

EDIT: SORRY! Als ich das tippte hat mir mein Feuerfuchs die Grafik im ersten Post nicht angezeigt -Neinstallation bewirkte wunder ;-)

Also einfach grinsen und meine Ausführungen ignorieren bitte :)
 
Zuletzt bearbeitet:
G

Gast2

Gast
Du solltest dir trotzdem nochmal deinen Code anschauen, der schleifenkrams etc. ist noch nicht wirklich richtig :)
 

Ähnliche Java Themen

Neue Themen


Oben