Pages : 1
#1 Le 17/06/2007, à 15:12
- mansonboy
année bissextile
bonjour, j'apprend le languague C depuis quelques temps et la je cherchais des petite exemple de programme pour m'aider a utiliser les fonctions. J'ai trouver un bon exemple sur le net (sur un forum) avec un bout de programme a completer. Voici le code :
#include <stdio.h>
int bissextile (int annee)
{
//code a completer
}
int main (void)
{
int annee;
scanf("%d", &annee);
printf("%d\n", bissextile(annee));
return 0;
}
Alors comme vous l'avez vu il faut completer la fonction bissextile mais je ne sais pas comment m'y prendre exactement. J'etait partie sur une idée, la voici :
int bissextile (int annee)
{
int annee;
scanf ("%d", &annee);
resultat = annee //la je sais pas ce que je pourait mettre pour calculer si c'est bissextile
return 1;
}
Si vous pouviez un peu m'aider
edit : J'ai reussi dite moi juste si je pourait l'ameliorer ou si c'est bon :
#include <stdio.h>
/* (non tésté)
renvoie 1 lorsque l'année est bisextile */
int bissextile (int annee)
{
if (((annee % 4) == 0 && (annee % 100) != 0) || (annee % 400 ) == 0)
{
return 1 ;
} else {
return 0 ;
}
}
int main (void)
{
int annee;
printf ("taper votre année\n");
scanf("%d", &annee);
printf("%d\n", bissextile(annee));
return 0;
}
Dernière modification par mansonboy (Le 17/06/2007, à 15:31)
Hors ligne
#2 Le 17/06/2007, à 15:43
- manal
Re : année bissextile
très bien, pas grand chose à redire
Libère ton esprit, et ton cul suivra
Hors ligne
#3 Le 17/06/2007, à 15:53
- mansonboy
Re : année bissextile
Merci, j'aurai pas penser que sa soit nikel
Hors ligne
#4 Le 17/06/2007, à 16:05
- hello_world
Re : année bissextile
Hello,
je pense que ton programme devrait fonctionner, mais il y a une chose qui me chiffonne. Pourquoi choisis tu que ta fonction renvoie des int. Elle ferait mieux de renvoyer des bool (vrai ou faux). Se serait plus propre... et ça fera un bon exercice.
A mieux y regarder, il y a une autre chose qui me chiffonne... appelons les trois Condition A B et C. Tu mets :
si A et B ou C, mais tu ne précises pas si il faut lire
si (A et B) ou C
ou
si A et (B ou C)
Il ne me semble pas que ce soit équivalent, et je ne suis pas très sur des lois qui décideront laquelle des deux possibilité sera retenue.
Mais autrement, très bon début, tu fais preuve d'imagination ;-)
++
Edit... en fait j'avais mal lu les parenthèses... je retire donc la deuxième remarque ;-)
Dernière modification par hello_world (Le 17/06/2007, à 16:07)
Hors ligne
#5 Le 17/06/2007, à 16:33
- mansonboy
Re : année bissextile
Je prend en compte ta premiere remarque et je vais voir pour faire ceci. Sinon si vous avez d'autre idée de petite programme comme ceci afin de m'exercer ainsi je suis partant
Hors ligne
#6 Le 17/06/2007, à 18:40
- manal
Re : année bissextile
Tu as raison hello_world, à ceci près que, en C les booléens n'existent pas vraiment. Il n'est donc pas si absurde de renvoyer un int (pour mansonboy : en C, 0 est faux et tout le reste est vrai)
Par contre, la règle de détermination de l'année bissextile est effectivement fausse (bien vu hello_world).
Je pense que tu aurais dû mettre :
if ( (annee % 4) == 0 && ((annee % 100) != 0 || (annee % 400 ) == 0)
(attention aux parenthèses)
A part ça, tu peux essayer de faire le classique petit programme qui calcule la factorielle (http://fr.wikipedia.org/wiki/Factorielle) d'un nombre. Le must étant de faire une fonction récursive (qui s'appelle elle-même)
Libère ton esprit, et ton cul suivra
Hors ligne
#7 Le 17/06/2007, à 19:37
- Gamma
Re : année bissextile
Effectivement hello_world ces expressions logiques ne sont pas du tout pareilles.
Je te conseil de regarder cet article sur l'algèbre de Boole : http://fr.wikipedia.org/wiki/Alg%C3%A8b … logique%29
Dernière modification par Gamma (Le 17/06/2007, à 19:38)
Hors ligne
#8 Le 17/06/2007, à 22:13
- hello_world
Re : année bissextile
Hello
Tu as raison hello_world, à ceci près que, en C les booléens n'existent pas vraiment. Il n'est donc pas si absurde de renvoyer un int (pour mansonboy : en C, 0 est faux et tout le reste est vrai)
Désolé, je ne connais que le c++. C'est étrange que de tel variable n'existe pas en C. Par contre à mon avis elle est correcte. De plus, ta proposition ne contient pas le même nombre de parenthèse ouvrante et fermante...
@Gamma
Pour faciliter leur compréhension, il a été décidé que ces opérations seraient soumises aux mêmes règles que les opérations « de tous les jours », la fonction ET (multiplication logique) est ainsi prioritaire par rapport à la fonction OU (somme logique) ; on peut, pour s'aider, placer des parenthèses dans les opérations.
C'était le seul point qui portait à confusion. Sinon je me débrouille pas trop mal ;-)
++
Hors ligne
#9 Le 17/06/2007, à 22:44
- manal
Re : année bissextile
De plus, ta proposition ne contient pas le même nombre de parenthèse ouvrante et fermante...
Carremba, je reconnais bien là mon côté brouillon. Il manque donc une parenthèse à la fin pour donner :
if ( (annee % 4) == 0 && ((annee % 100) != 0 || (annee % 400 ) == 0) )
Mais, à part ça, je connais pas très bien le c++, mais, tu es sûr que le type booléen existe nativement dans ce langage ?
Libère ton esprit, et ton cul suivra
Hors ligne
#10 Le 18/06/2007, à 07:07
- hello_world
Re : année bissextile
Hello,
je ne sais pas ce que tu appelles "exister nativement", mais en tout cas une déclaration du type:
bool a;
a = true;
passe la compilation avec gcc sans autre bibliothèque. Mais p-e que gcc ne respecte pas le standard c++ ou je sais pas quel autre feinte... Ces dernier temps je travaille en c# ou il en va de même.
++
Hors ligne
#11 Le 18/06/2007, à 12:11
- manal
Re : année bissextile
Effectivement, tu as raison. Vu sur http://www.glenmccl.com/bool_cmp.htm
Je ne connaissais pas ce type en c++. Je m'endormirai moins con ce soir.
Libère ton esprit, et ton cul suivra
Hors ligne
Pages : 1