Aggiunta soluzione prof a ExpGenerator

Soluzione sbagliata o trascrizione sbagliata? Ultimo numero stampato è
sempre 1.0
This commit is contained in:
Giacomo R. 2023-01-11 17:27:33 +01:00
parent ed085aaf36
commit f3380f8888
3 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,29 @@
public class ExpGenerator implements Sequence<Double>{
private double x, nuovo, old, potenza, fattoriale;
private int n;
public static final double EPSILON = 1E-6;
public ExpGenerator(double x) {
this.x = x;
nuovo = 1;
old = 0;
potenza = 1;
fattoriale = 1;
n = 0;
}
public boolean hasNext() {
return Math.abs(nuovo-old) >= EPSILON;
}
public Double next() {
if(!hasNext()) throw new IllegalArgumentException();
old = nuovo;
n++;
potenza *= x;
fattoriale *= n;
nuovo = old + potenza/fattoriale;
return old;
}
}

View File

@ -0,0 +1,23 @@
import java.util.Scanner;
/**
Classe che esegue il test dell'uso della funzione ExpApprossimator
@author radaelli11353
*/
public class ExpTester {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Inserisci il valore di x");
double x = in.nextDouble();
ExpGenerator gen = new ExpGenerator(x);
double sum = 1;
while(gen.hasNext()) {
System.out.println(gen.next());
}
System.out.println(sum);
}
}

View File

@ -0,0 +1,4 @@
public interface Sequence<T> {
public boolean hasNext();
public T next();
}