Connaître le signe astrologique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 432 fois - Téléchargée 16 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
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
10 juin 2019
85 -
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.