Connaître le signe astrologique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 634 fois - Téléchargée 17 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

Messages postés
3809
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
22 avril 2020
105
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.