nsi:langages:rust:solutions:jour_semaine
Ceci est une ancienne révision du document !
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149
Warning: Trying to access array offset on value of type null in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 149
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Trouver le jour correspondant à une date
Je n'ai pas encore bien déterminer comment faire pour récupérer une date depuis une chaîne de caractères. Je fixe donc les valeurs dans le main.
const MOIS:[usize;12] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
const JOURS:[&str;7] = ["samedi", "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi"];
const AREF:usize = 2000; // année de référence
fn is_bissextile(annee: usize) -> bool {
if annee % 1000 == 0 {
true
} else if annee % 100 == 0 {
false
} else if annee % 4 == 0 {
true
} else {
false
}
}
fn days_in_month(month: usize, annee:usize) -> usize {
let n = MOIS[month - 1];
if (month == 2) && is_bissextile(annee) {
n + 1
} else {
n
}
}
fn days_in_year(annee:usize) -> usize {
if is_bissextile(annee) {
366
} else {
365
}
}
fn jours_finir_annee(jour: usize, mois: usize, annee:usize) -> usize {
// renvoie le nombres de jours pour une certaines dates pour atteindre
// le 1er janvier de l'année d'après
let mut days:usize = days_in_month(mois, annee) - (jour-1);
for m in (mois+1)..=12 {
days += days_in_month(m, annee);
}
days
}
fn jours_depuis_debut(jour: usize, mois: usize, annee:usize) -> usize {
// renvoie le nombres de jours pour atteindre une certaine date
// depuis le 1e janvier de cette même année
let mut days:usize = jour-1;
for m in 1..mois {
days += days_in_month(m, annee);
}
days
}
fn nombre_jours(jour: usize, mois: usize, annee:usize) -> usize {
if annee >= AREF {
let mut days = jours_depuis_debut(jour, mois, annee);
for a in AREF..annee {
days += days_in_year(a);
}
days % 7
} else {
let mut days = jours_finir_annee(jour, mois, annee);
for a in (annee+1)..AREF {
days += days_in_year(a);
}
7 - (days % 7)
}
}
fn main() {
let jour:usize = 18;
let mois:usize = 03;
let annee:usize = 1977;
let delta = nombre_jours(jour, mois, annee);
println!("{}", JOURS[delta]);
}
nsi/langages/rust/solutions/jour_semaine.1648837084.txt.gz · Dernière modification : de goupillwiki
