Wurzelziehproblem

Schrubber

Bekanntes Mitglied
Hallo ihr,

Ich bin ja an meiner eigenen lib dran und bau mir grad ein paar Funktionen, die nicht auf eine Funktion (also quadrat z.B. nicht hoch2, sondern hochx) beschränkt ist, sondern vom User zur Laufzeit ausgewählt werden kann.

Folgendes habe ich bereits hinbekommen:

Java:
public static double logax(double a, int b)
{
	double logx = Math.log(a);
	double logy = Math.log(b);
	double logergebnis = logx/logy;
	
	return logergebnis;
}

für:
Java:
import java.io.*;
import ownlib.ownlib;
public class Logarythmus
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		
		System.out.println("Bitte Gleitkommazahl eingeben: ");
		double gleitkommazahl = Double.parseDouble(in.readLine());
		
		double logergebnis = ownlib.logax(gleitkommazahl,3);
		System.out.println("Das Ergebnis der Logarythmus-Rechnung ist: "+logergebnis);		
	}
}

und

Java:
public static int expx(int a, int b)
{
	int ergebnis = a;
	for(int i = 1; i < b;i++)
	{
		ergebnis = ergebnis * a;
	}
	return ergebnis;
}

für:
Java:
import ownlib.ownlib;
import java.io.*;

public class Exponent
{
public static void main(String[] args) throws IOException
{
	BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	
	int e1 = Integer.parseInt(in.readLine());
	int e2 = Integer.parseInt(in.readLine());
	
	double expergebnis = ownlib.expx(e1,e2);
	System.out.println("Das Ergebnis der exponentialen Aufgabe beträgt: "+expergebnis);
}
}

Nun bin ich bei der nten-Wurzel angekommen.
Er soll mir also die zur Laufzeit eingegebene Wurzel aus der vorher eingegebenen Zahl ziehen.


So dachte ich mir das bis jetzt eigentlich:

Java:
public static float rootx(int a, int b)
{
	int hilfe = 1/b;
	int ergebnis = ownlib.expx(a, hilfe);
	return ergebnis;
}
}

Da ja gilt:
Beispiel: Dritte Wurzel aus 25: In A steht 25 in B steht 3 und in Zelle C folgende Formel: =A^(1/B)


Nun gibt er mir bei folgendem Programm meine Zahl, woraus die Wurzel gezogen werden soll, als Ausgabewert aus.

Java:
import java.io.*;
import ownlib.ownlib;

public class WurzelN
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Bitte Zahl eingeben, aus der Wurzel gezogen werden soll.");
		int a = Integer.parseInt(in.readLine());
		
		System.out.println("Bitte Zahl eingeben, die wievielte Wurzel gezogen werden soll.");
		int b = Integer.parseInt(in.readLine());
		
		float ergebnis = ownlib.rootx(a, b);
		System.out.println("Die gezogene Zahl ist: "+ergebnis);
	}

}

Wo ist mein Denkfehler? :(


Vielen lieben Dank,
Schrubber.
 

chri

Mitglied
in deiner expx implementierung kann er aber nur mit ganzen zahlen umgehen.
Java:
public static int expx(int a, int b) //b ist int, also kein 1/3 für 3te wurzel möglich
{
    int ergebnis = a;
    for(int i = 1; i < b;i++) // wird für zahlen kleiner 1 nicht klappen
    {
        ergebnis = ergebnis * a;
    }
    return ergebnis;
}
dafür gibt es Math.pow(a,b)

Abgesehen davon ist
Java:
int hilfe = 1/b;
immer 0 (außer b=1), weil int.
 

Neue Themen


Oben