Les bases du Rust 2
Ces exercices portent sur les fonctions, le if utilisé comme expression, la
boucle for sur des valeurs et le mot-clé return. Faites-les dans l'ordre.
Valeur absolue
Renvoyer la valeur absolue d'un entier, en utilisant le if comme expression
(pas de return, pas de mut).
- Objectif :
let x = if cond { a } else { b };. - Signature suggérée :
fn abs(n: i64) -> i64. - Cas de test :
abs(-5)->5,abs(5)->5,abs(0)->0.
Factorielle
Calculer n! (produit des entiers de 1 à n). Par convention 0! = 1.
- Objectif :
for, accumulateur. - Signature suggérée :
fn factorielle(n: u64) -> u64. - Cas de test :
factorielle(0)->1,factorielle(1)->1,factorielle(5)->120,factorielle(10)->3628800.
PGCD (algorithme d'Euclide)
Calculer le plus grand commun diviseur de deux entiers par modulos successifs.
- Objectif :
while,%, réaffectation de variables. - Signature suggérée :
fn pgcd(a: u64, b: u64) -> u64. - Cas de test :
pgcd(12, 18)->6,pgcd(17, 5)->1,pgcd(0, 7)->7,pgcd(48, 36)->12.
Puissance sans pow
Calculer base élevé à la puissance exp, sans utiliser i64::pow ni
f64::powi.
- Objectif :
for, accumulateur multiplicatif. - Signature suggérée :
fn puissance(base: i64, exp: u32) -> i64. - Cas de test :
puissance(2, 0)->1,puissance(2, 10)->1024,puissance(-3, 3)->-27.
Nombre de chiffres
Compter les chiffres de l'écriture décimale d'un entier. 0 compte pour un
chiffre.
- Objectif :
while, division entière/= 10. - Signature suggérée :
fn nb_chiffres(n: u64) -> u32. - Cas de test :
nb_chiffres(0)->1,nb_chiffres(7)->1,nb_chiffres(1000)->4,nb_chiffres(123456789)->9.