Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

Language C

Posté par
Mathes1
15-11-22 à 14:02

Bonjour à tous
J'ai un exercice merci beaucoup d'avance
•Ecrire un programme qui étant donnée un mois et son premier jour, affiche le premier jour du mois suivant.
Une année est bissextile si annee est divisible par 4 et n'est pas divisible par 100 ; ou bien est divisible par 400. Le
premier jour du mois est codé par un entier de 0(dimanche) à 6(samedi).
_______________________________________
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main ()
{
int annee;
Printf("saisir une annee");
Scanf("%d",&annee);
If(annee%4==0&&annee%100!=0)||(annee %400==0))
Printf("%d est une annee bissextile",annee);
Else
Printf("%d n'est pas une annee bissextile",annee);
return 0;
}
Merci d'avance

Posté par
ty59847
re : Language C 15-11-22 à 14:35

L'énoncé te parle d'années bissextiles,  mais c'est presque un détail.

Oublie le langage C.
Si je te dis que le 1er  janvier 1950 était un mardi, sais tu me dire si le 1er février 1950 était un lundi, un mardi etc ?

Et ce qui m'intéresse, ce n'est pas forcément la réponse, c'est le raisonnement, la liste des étapes.
Parce que dans ton algorithme, il faudra que tu reproduises ce raisonnement.

Posté par
sanantonio312
re : Language C 15-11-22 à 15:42

Bonjour à tous les deux,
J'ajoute que le sujet, en ce qui concerne les données

Citation :
étant donnée un mois et son premier jour
n'évoque en rien l'année
L'énoncé est-il intégral?

Posté par
Mathes1
re : Language C 15-11-22 à 17:21

Bonjour à tous
Merci beaucoup à vous deux pour vos réponses !
L'énoncé est bien intégral

Citation :
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main ()
{
int annee,j,m;
Printf("saisir le jour et le mois");
Scanf("%d%d,&j&m);
j=(j+m)%7
;
Printf("saisir une annee");
Scanf("%d",&annee);
If(annee%4==0&&annee%100!=0)||(annee %400==0))
Printf("%d est une annee bissextile",annee);
Else
Printf("%d n'est pas une annee bissextile",annee);
return 0;
}

Posté par
ty59847
re : Language C 15-11-22 à 17:38

Tu fais tout à l'envers.
En algorithmique, on commence par établir un plan, un processus. Et ensuite, quand on a un plan, on traduit ça en langage informatique.
Le plan, il est en français.

Je recopie donc ma question, tu ne l'as pas vue :

Si je te dis que le 1er  janvier 1950 était un mardi, sais tu me dire si le 1er février 1950 était un lundi, un mardi etc ?
Et ce qui m'intéresse, ce n'est pas forcément la réponse, c'est le raisonnement, la liste des étapes.

Posté par
Mathes1
re : Language C 15-11-22 à 23:14

bonjour
voilà ce que j'ai trouvé après une recherche
#include <stdio.h>


int main()
{
    unsigned jour;
    unsigned mois;

    printf("Entrez une date (jj/mm) : ");
    scanf("%u/%u", &jour, &mois);

    unsigned njours = (mois - 1) * 31;

    switch (mois)
    {
    case 12:
        --njours;
    case 11:
    case 10:
        --njours;
    case 9:
    case 8:
    case 7:
        --njours;
    case 6:
    case 5:
        --njours;
    case 4:
    case 3:
        njours -= 3;
        break;
    }

    njours += (jour - 1);

    switch (njours % 7)
    {
    case 0:
        printf("C'est un samedi\n");
        break;

    case 1:
        printf("C'est un dimanche\n");
        break;

    case 2:
        printf("C'est un lundi\n");
        break;

    case 3:
        printf("C'est un mardi\n");
        break;

    case 4:
        printf("C'est un mercredi\n");
        break;

    case 5:
        printf("C'est un jeudi\n");
        break;

    case 6:
        printf("C'est un vendredi\n");
        break;
    }

    return 0;
}
}

Posté par
ty59847
re : Language C 15-11-22 à 23:50

Je recopie la question une 3ème fois, ou j'abandonne ?
J'abandonne.

Posté par
Mathes1
re : Language C 16-11-22 à 00:33

Bonjour
Franchement j'ai aucune idée pour  votre demande, désolé
Merci

Posté par
ty59847
re : Language C 16-11-22 à 11:38

Si le 1er janvier 1950 était un mardi, alors le 8 janvier aussi,
le 15 janvier aussi,
le 22 janvier aussi,
le 29 janvier aussi,
le 30 janvier était un mercredi
le 31 janvier était un jeudi
et le 1er février était un vendredi.

Et l'information utile ici, c'est de savoir que le mois de janvier a 31 jours.

31 jours, c'est 4 semaines + 3jours.
30 jours, c'est 4 semaines + 2jours.
29 jours, c'est 4 semaines + 1jour.
28 jours, c'est 4 semaines .

Partant d'une date donnée,
Quel est le mois en cours ?
Combien de jour y-a-t-il dans ce mois ?
   avec un petit truc vicieux :  si on est en février, il faudra tester si c'est une année bissextile ou non.  (dans une première version, on peut faire l'impasse, puis ensuite, faire les corrections pour traiter les années bissextiles)
Quand on connaît le nombre de jours dans le mois à traiter, alors on sait combien il faut ajouter ou retrancher au n° de jour de départ.

Posté par
flight
re : Language C 16-11-22 à 18:01

Exo intéressant... Facile à programmer en vba



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !