Skip to content
Snippets Groups Projects
Commit bf42c9fa authored by ASFOUR Mohamed's avatar ASFOUR Mohamed
Browse files

premiere partie de tp2 c bon

parent 270f95e1
Branches master
No related tags found
No related merge requests found
......@@ -3,4 +3,6 @@ package formula;
public interface Formula {
String asString();
double asValue();
String symbol();
}
\ No newline at end of file
package formula;
public class Product implements Formula{
import java.util.List;
private Formula left;
private Formula right;
public class Product extends VariadicOperator {
public Product(Formula left, Formula right) {
this.left=left; this.right=right;
super(left, right);
}
@Override
public String asString() {
return "("+left.asString()+"*"+right.asString()+")";
public String symbol() {
return "*";
}
@Override
protected double initialValue() {
return 1; // Pour un produit, la valeur initiale est 1
}
@Override
protected double cumulativeValue(double accumulator, double value) {
return accumulator * value; // Produit accumulatif
}
@Override
public double asValue() {
return right.asValue()*left.asValue();
public String asString() {
// Suppose we have a list of values to be multipliés
// Example implementation, assuming `left` and `right` are accessible
List<Double> values = getValues(); // Méthode pour obtenir les valeurs à multiplier
StringBuilder sb = new StringBuilder();
for (int i = 0; i < values.size(); i++) {
if (i > 0) {
sb.append(" ").append(symbol()).append(" ");
}
sb.append(values.get(i));
}
return sb.toString();
}
// Méthode pour obtenir les valeurs de la formule (à adapter selon votre implémentation)
private List<Double> getValues() {
// Implémentation spécifique pour obtenir les valeurs de la formule
// Cela dépend de la façon dont les valeurs sont stockées dans votre projet
return List.of(); // Remplacez par l'implémentation réelle
}
}
......@@ -16,4 +16,9 @@ public class Square implements Formula {
public double asValue() {
return formula.asValue()* formula.asValue();
}
@Override
public String symbol() {
return "2";
}
}
\ No newline at end of file
......@@ -16,4 +16,9 @@ public class SquareRoot implements Formula{
public double asValue() {
return Math.sqrt(formula.asValue());
}
@Override
public String symbol() {
return "racine";
}
}
\ No newline at end of file
package formula;
public class Sum implements Formula {
import java.util.List;
private Formula left;
private Formula right;
public class Sum extends VariadicOperator {
public Sum(Formula left, Formula right) {
this.left=left; this.right=right;
super(left, right);
}
@Override
public String asString() {
return "("+left.asString()+"+"+right.asString()+")";
public String symbol() {
return "+";
}
@Override
protected double initialValue() {
return 0; // Pour une somme, la valeur initiale est 0
}
@Override
protected double cumulativeValue(double accumulator, double value) {
return accumulator + value; // Somme accumulative
}
@Override
public double asValue() {
return right.asValue()+left.asValue();
public String asString() {
// Suppose we have a list of values to be summed
// Example implementation, assuming `left` and `right` are accessible
List<Double> values = getValues(); // Méthode pour obtenir les valeurs à additionner
StringBuilder sb = new StringBuilder();
for (int i = 0; i < values.size(); i++) {
if (i > 0) {
sb.append(" ").append(symbol()).append(" ");
}
sb.append(values.get(i));
}
return sb.toString();
}
// Méthode pour obtenir les valeurs de la formule (à adapter selon votre implémentation)
private List<Double> getValues() {
// Implémentation spécifique pour obtenir les valeurs de la formule
// Cela dépend de la façon dont les valeurs sont stockées dans votre projet
return List.of(); // Remplacez par l'implémentation réelle
}
}
......@@ -22,4 +22,9 @@ public class Variable implements Formula {
public double asValue() {
return i;
}
@Override
public String symbol() {
return ",";
}
}
\ No newline at end of file
package formula;
public abstract class VariadicOperator implements Formula {
protected Formula left;
protected Formula right;
public VariadicOperator(Formula left, Formula right) {
this.left = left;
this.right = right;
}
// Méthode pour le symbole, à définir dans les sous-classes
public abstract String symbol();
// Méthode pour la valeur initiale, à définir dans les sous-classes
protected abstract double initialValue();
// Méthode pour accumuler les valeurs, à définir dans les sous-classes
protected abstract double cumulativeValue(double accumulator, double value);
@Override
public String asString() {
return "(" + left.asString() + symbol() + right.asString() + ")";
}
@Override
public double asValue() {
double accumulator = initialValue();
accumulator = cumulativeValue(accumulator, left.asValue());
accumulator = cumulativeValue(accumulator, right.asValue());
return accumulator;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment