1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| static void Main(string[] args)
{
// Tableau des signes et dates de fin correspondantes (utilisation d'une année bisextile : 2020)
TabSignes[] tabAstro = new TabSignes[13];
tabAstro[0] = new TabSignes() { signe = "Capricorne", date = new DateTime(2020, 1, 19) };
tabAstro[1] = new TabSignes() { signe = "Verseau", date = new DateTime(2020, 2, 19) };
tabAstro[2] = new TabSignes() { signe = "Poissons", date = new DateTime(2020, 3, 20) };
tabAstro[3] = new TabSignes() { signe = "Bélier", date = new DateTime(2020, 4, 19) };
tabAstro[4] = new TabSignes() { signe = "Taureau", date = new DateTime(2020, 5, 20) };
tabAstro[5] = new TabSignes() { signe = "Gémeaux", date = new DateTime(2020, 6, 20) };
tabAstro[6] = new TabSignes() { signe = "Cancer", date = new DateTime(2020, 7, 22) };
tabAstro[7] = new TabSignes() { signe = "Lion", date = new DateTime(2020, 8, 23) };
tabAstro[8] = new TabSignes() { signe = "Vierge", date = new DateTime(2020, 9, 22) };
tabAstro[9] = new TabSignes() { signe = "Balance", date = new DateTime(2020, 10, 22) };
tabAstro[10] = new TabSignes() { signe = "Scorpion", date = new DateTime(2020, 11, 21) };
tabAstro[11] = new TabSignes() { signe = "Sagittaire", date = new DateTime(2020, 12, 21) };
tabAstro[12] = new TabSignes() { signe = "Capricorne", date = new DateTime(2020, 12, 31) };
while (true)
{
Console.Clear();
TabSignes monAstro = new TabSignes() { date = new DateTime(2020, 1, 1) };
// Permet la saisie du mois 1 à 12
string reponse = saisie("Veuillez saisir le mois de naissance : ", Enumerable.Range(1, 12).Select(x => x.ToString()).ToArray(), "Ce mois est inexistant!");
monAstro.date = new DateTime(2020, int.Parse(reponse), 1);
// Permet la saisie du jour de 1 jusqu'au dernier en fonction du mois
int jourMaxDuMois = DateTime.DaysInMonth(monAstro.date.Year, monAstro.date.Month);
reponse = saisie("Veuillez entrer le jour de naissance : ", Enumerable.Range(1, jourMaxDuMois).Select(x => x.ToString()).ToArray(), "Ce jour est inexistant!");
monAstro.date = new DateTime(2020, monAstro.date.Month, int.Parse(reponse));
// Trouve le signe correspondant
monAstro.signe = tabAstro.First(a => a.date >= monAstro.date).signe;
// Affichage du signe
Console.Clear();
Console.WriteLine("La personne né le " + monAstro.date.Day + "/" + monAstro.date.Month + " est du signe " + monAstro.signe + "\r\n\r\n");
// Demande si on continue
reponse = saisie("Souhaitez-vous saisir une autre date de naissance ? ($StrValidation) ", new string[] { "O", "N" });
if (string.Compare(reponse, "N", true) == 0)
break;
}
}
public struct TabSignes
{
public string signe;
public DateTime date; // Date limite max du signe
}
static string saisie(string message, string[] StrValidation, string messageErr)
{
// Remplace $StrValidation par les chaines de validation séparé par un /
message = message.Replace("$StrValidation", string.Join("/", StrValidation));
messageErr = messageErr.Replace("$StrValidation", string.Join("/", StrValidation));
while (true)
{
Console.Write(message);
string reponse = Console.ReadLine();
if (StrValidation.Contains(reponse, StringComparer.InvariantCultureIgnoreCase))
return reponse;
Console.WriteLine(messageErr);
}
}
static string saisie(string message, string[] StrValidation)
{
return saisie(message, StrValidation, "\r\nVeuillez saisir une chaine valide!");
} |
Partager