Skip to content

Instantly share code, notes, and snippets.

@dlecan
Created December 13, 2016 16:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dlecan/eab705ced4fad4ee558524ab2b53f2f3 to your computer and use it in GitHub Desktop.
Save dlecan/eab705ced4fad4ee558524ab2b53f2f3 to your computer and use it in GitHub Desktop.
use std::env;
struct Division {
numerateur: i32,
denominateur: i32,
}
impl Division {
fn new(x: i32, y: i32) -> Division {
Division {
numerateur: x,
denominateur: y,
}
}
fn calculer(&self) -> i32 {
match self.denominateur {
0 => panic!("Division par 0"),
1 => self.numerateur,
_ => self.numerateur / self.denominateur
}
}
}
trait HasSymbol {
fn symbol(&self) -> String;
}
impl HasSymbol for Division {
fn symbol(&self) -> String {
"/".to_string()
}
}
fn main() {
let numerateur = match env::args().nth(1) {
Some(argument) => argument,
None => panic!("Argument obligatoire manquant : le numérateur")
};
let numerateur = match numerateur.parse::<i32>() {
Ok(numerateur) => numerateur,
Err(error) => panic!("Impossible de convertir notre argument. Raison: {}", error)
};
let division = Division::new(numerateur, 2);
println!("Symbole : {}", division.symbol());
let resultat = division.calculer();
println!("Résultat : {}", resultat);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment