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> {
|
||||
let somme_texte: Vec<&str> = arguments.split("plus").collect();
|
||||
let mut somme : usize = 0;
|
||||
for element in somme_texte {
|
||||
let element_propre: &str = element.trim();
|
||||
let Some(first_char) = element_propre.chars().next() else {
|
||||
for somme_element in somme_texte {
|
||||
let somme_element_propre: &str = somme_element.trim();
|
||||
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()))
|
||||
};
|
||||
let nombre = if first_char.is_uppercase() {
|
||||
self.variables[element_propre]
|
||||
self.variables[produit_element_propre]
|
||||
} else {
|
||||
nombres::texte_comme_nombre(element_propre)?
|
||||
nombres::texte_comme_nombre(produit_element_propre)?
|
||||
};
|
||||
somme += nombre;
|
||||
produit *= nombre;
|
||||
}
|
||||
somme += produit;
|
||||
}
|
||||
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