Problème de programmation - C - Programmation
Marsh Posté le 20-01-2011 à 23:47:30
et c'est quoi ton probleme ?
Quand un entier commence par 0 (0121 par exemple), cela signifie qu'il est exprime en base octale, ce n'est pas ce que tu souhaites ici...
si ton user rentre "0121", ce sera automatiquement converti en 121.
Marsh Posté le 21-01-2011 à 00:37:02
a ok merci il faut donc que je retire le zero en début de nombre ?
Marsh Posté le 21-01-2011 à 00:39:14
Scanf c'est le mal pour ce genre de trucs
Marsh Posté le 21-01-2011 à 10:32:30
Citation : else if (dateentre >= 1222 && dateentre <= 0120) |
Doit pas y avoir beaucoup de Capricornes
Vu que tous les autres tests sont passés, à ce stade la, un
else if (dateentre >= 1222 || dateentre <= 0120) |
devrait coller
A+,
Marsh Posté le 21-01-2011 à 10:48:46
Bon, il y a divers autres problèmes, comme le fait qu'il n'y a pas de détection d'une date invalide.
Une question de style. Je me limite a deux blocs similaires pour l'exemple.
Citation : if (dateentre >= 0121 && dateentre <= 0218) |
Il faut choisir:
Soit
Code :
|
Soit
Code :
|
Car sinon, il y a des instructions inutiles.
A+,
Marsh Posté le 21-01-2011 à 16:00:25
Tiens, un truc du genre qui marche, à toi d'améliorer (tenir compte des années bissextiles, etc)
Code :
|
Exemple écrit pour te donner une idée du type de structure de donnée que tu aurais pu employer, ce qui aurait donné un algo quasi immédiat pour en déduire le signe zodiacal.
A+,
Marsh Posté le 21-01-2011 à 17:05:13
Nan mais gilou je pense que tu verses dans le délire là ... Il sait à peine faire quelques if, un include, un scanf et des return et toi tu lui balances des structures, des define, du pointeur, des ternaires, un switch case et du EXIT_FAILURE/SUCCESS
Le mec il va se suicider en voyant ton exemple
Marsh Posté le 21-01-2011 à 17:33:40
Alors que j'ai mis une belle structure de données qu'on en voit pas tous les jours des comme ça en C avec un beau tableau de struct anonyme (parce nombre de clampins auraient fait ça en deux morceaux avec un typedef...)
Code :
|
Et en plus j'avais simplifié (viré du code pour tester les années bissextiles) pensant qu'il aurait des difficultés avec:
Code :
|
A+,
Marsh Posté le 21-01-2011 à 20:10:21
gilou a écrit : Alors que j'ai mis une belle structure de données qu'on en voit pas tous les jours des comme ça en C avec un beau tableau de struct anonyme (parce nombre de clampins auraient fait ça en deux morceaux avec un typedef...)
|
J'aurais fait avec un typedef, je connaissais pas cette structure (jeu de mots proof )
Mais oui le isYearLeap ça aurait été la cerise sur le gâtal
Marsh Posté le 20-01-2011 à 22:52:03
Bonjour,
Pouvez vous me dire quel est le problème ?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int dateentre = 0;
printf ("entrez votre date de naissance sous la forme mmjj : " );
scanf ("%d", &dateentre);
if (dateentre >= 0121 && dateentre <= 0218)
{
printf ("Vous etes Verseau" );
return = 0;
}
else if (dateentre >= 0219 && dateentre <= 0320)
{
printf ("Vous etes Poisson" );
return = 0;
}
else if (dateentre >= 0321 && dateentre <= 0420)
{
printf ("Vous etes Belier" );
return = 0.
}
else if (dateentre >= 0421 && dateentre <= 0521)
{
printf ("Vous etes Taureau" );
return = 0;
}
else if (dateentre >= 0522 && dateentre <= 0621)
{
printf ("Vous etes Gemeaux" );
return = 0;
}
else if (dateentre >= 0622 && dateentre <= 0722)
{
printf ("Vous etes Cancer" );
return = 0;
}
else if (dateentre >= 0723 && dateentre <= 0823)
{
printf ("Vous etes Lion" );
return = 0;
}
else if (dateentre >= 0824 && dateentre <= 0922)
{
printf ("Vous etes Vierge" );
return = 0;
}
else if (dateentre >= 0923 && dateentre <= 1022)
{
printf ("Vous etes Balance" );
return = 0;
}
else if (dateentre >= 1023 && dateentre <= 1122)
{
printf ("Vous etes Scorpion" );
return = 0;
}
else if (dateentre >= 1123 && dateentre <= 1221)
{
printf ("Vous etes Sagittaire" );
return = 0;
}
else if (dateentre >= 1222 && dateentre <= 0120)
{
printf ("Vous etes Capricorne" );
return = 0;
}
}