Connaître le signe astrologique

0/5 (1 avis)

Snippet vu 4 344 fois - Téléchargée 19 fois

Contenu du snippet

char* getAstrologicalSign(int day, int month) 
{ 
    // astrological signs 
 static char* signs[12] = {"Capricorn","Aquarius","Pisces","Aries", 
     "Taurus","Gemini","Cancer","Leo", 
     "Virgo","Libra","Scorpio","Sagittarius"}; 

 // transition day in the month 
 static int dayTransition[12] = {20,18,20,19,20,21,22,22,22,23,22,21}; 

 // compute the index of the astrological sign 
 // be careful: do not be confused between array index and month index 
 int index = day <= dayTransition[month-1] ? (month-1)%12 : month%12; 

 return signs[index]; 
} 


Voici l'appel à la fonction:

printf("%s",getAstrologicalSign(13,10)); // résultat: Libra (pour le 13 octobre)

A voir également

Ajouter un commentaire Commentaire
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 124
Modifié par cptpingu le 30/07/2013 à 12:26
Je propose quelques modifications mineures:
- Modulo pour éviter des dépassements de bornes (month > 12 == segfault)
- Ajout de constitude
- Ajout d'un \n dans le printf
- Attention les commentaires en C sont "/* */" et non "//"

#include <stdio.h>

const char* getAstrologicalSign(int day, int month)
{
  static const char* signs[12] = {"Capricorn", "Aquarius", "Pisces", "Aries",
      "Taurus", "Gemini", "Cancer", "Leo",
      "Virgo", "Libra", "Scorpio", "Sagittarius"};
  static const int dayTransition[12] = {20, 18, 20, 19, 20, 21, 22, 22, 22, 23, 22, 21};

  const int index = day <= dayTransition[(month % 12) - 1] ? (month - 1) % 12 : month % 12;
  return signs[index];
}

int main()
{
  printf("%s\n", getAstrologicalSign(13000, 201000));
  return 0;
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.