Bonjour, je suis un peu novice en programmation, plutôt un hobby. Je me demande si la logique ou la technique suivante a un nom ou un terme spécifique. Mon projet actuel comporte 7 cases à cocher, une pour chaque jour de la semaine. J'avais besoin d'un moyen facile de sauvegarder les cases cochées.
La méthode suivante permet de sauvegarder les cases cochées en un seul nombre. Chaque case cochée reçoit une valeur qui est le double de la dernière case cochée. Lorsque je veux savoir quelles cases sont cochées, je travaille à rebours et je vois combien de fois je peux diviser la valeur totale par la valeur de la case à cocher.
private int SetSelectedDays()
{
int selectedDays = 0;
selectedDays += (dayMon.Checked) ? 1 : 0;
selectedDays += (dayTue.Checked) ? 2 : 0;
selectedDays += (dayWed.Checked) ? 4 : 0;
selectedDays += (dayThu.Checked) ? 8 : 0;
selectedDays += (dayFri.Checked) ? 16 : 0;
selectedDays += (daySat.Checked) ? 32 : 0;
selectedDays += (daySun.Checked) ? 64 : 0;
return selectedDays;
}
private void SelectedDays(int n)
{
if ((n / 64 >= 1) & !(n / 64 >= 2))
{
n -= 64;
daySun.Checked = true;
}
if ((n / 32 >= 1) & !(n / 32 >= 2))
{
n -= 32;
daySat.Checked = true;
}
if ((n / 16 >= 1) & !(n / 16 >= 2))
{
n -= 16;
dayFri.Checked = true;
}
if ((n / 8 >= 1) & !(n / 8 >= 2))
{
n -= 8;
dayThu.Checked = true;
}
if ((n / 4 >= 1) & !(n / 4 >= 2))
{
n -= 4;
dayWed.Checked = true;
}
if ((n / 2 >= 1) & !(n / 2 >= 2))
{
n -= 2;
dayTue.Checked = true;
}
if ((n / 1 >= 1) & !(n / 1 >= 2))
{
n -= 1;
dayMon.Checked = true;
}
if (n > 0)
{
//log event
}
}
Cette méthode fonctionne bien pour ce dont j'ai besoin, mais si vous voyez une autre façon de faire, ou une meilleure façon d'écrire, je serais intéressé par vos suggestions.