Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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 wink

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

manal a écrit :

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

wikipedia a écrit :

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

hello_world a écrit :

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