multiplication
This commit is contained in:
parent
5d100ec8f7
commit
61288747ae
33
src/main.rs
33
src/main.rs
|
@ -127,17 +127,24 @@ impl Sophie {
|
||||||
pub fn operation(&self, arguments: &str) -> Result<usize, ErreurSophie> {
|
pub fn operation(&self, arguments: &str) -> Result<usize, ErreurSophie> {
|
||||||
let somme_texte: Vec<&str> = arguments.split("plus").collect();
|
let somme_texte: Vec<&str> = arguments.split("plus").collect();
|
||||||
let mut somme : usize = 0;
|
let mut somme : usize = 0;
|
||||||
for element in somme_texte {
|
for somme_element in somme_texte {
|
||||||
let element_propre: &str = element.trim();
|
let somme_element_propre: &str = somme_element.trim();
|
||||||
let Some(first_char) = element_propre.chars().next() else {
|
let produit_texte: Vec<&str> = somme_element_propre.split("fois").collect();
|
||||||
|
|
||||||
|
let mut produit : usize = 1;
|
||||||
|
for produit_element in produit_texte {
|
||||||
|
let produit_element_propre: &str = produit_element.trim();
|
||||||
|
let Some(first_char) = produit_element_propre.chars().next() else {
|
||||||
return Err(ErreurSophie::MauvaisArgument("il y a un argument vide pour l'operation".to_string()))
|
return Err(ErreurSophie::MauvaisArgument("il y a un argument vide pour l'operation".to_string()))
|
||||||
};
|
};
|
||||||
let nombre = if first_char.is_uppercase() {
|
let nombre = if first_char.is_uppercase() {
|
||||||
self.variables[element_propre]
|
self.variables[produit_element_propre]
|
||||||
} else {
|
} else {
|
||||||
nombres::texte_comme_nombre(element_propre)?
|
nombres::texte_comme_nombre(produit_element_propre)?
|
||||||
};
|
};
|
||||||
somme += nombre;
|
produit *= nombre;
|
||||||
|
}
|
||||||
|
somme += produit;
|
||||||
}
|
}
|
||||||
Ok(somme)
|
Ok(somme)
|
||||||
}
|
}
|
||||||
|
@ -239,4 +246,18 @@ mod tests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn teste_multiplication() {
|
||||||
|
let sophie = Sophie::new();
|
||||||
|
let resultat = sophie.operation("trois fois deux plus quatre fois sept");
|
||||||
|
match resultat {
|
||||||
|
Ok(nombre) => {
|
||||||
|
assert_eq!(nombre, 34, "Echec de la multiplication de 3*2+4*7, got {}", nombre);
|
||||||
|
}
|
||||||
|
Err(raison) => {
|
||||||
|
panic!("Execution échouée pour multiplication, avec l'erreur : {}", raison);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue