Programmation en C

cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006 - 10 mai 2006 à 10:56
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006 - 12 mai 2006 à 10:51
Bonjour
voici le programme que j'ai pu faire mais ça ne marche comme je le souhaite. veuillez m'aidez a reoudre ce problème.
voici le programme












// naissance.cpp : Defines the entry point for the console application.
//

#include

#include
#include
#include



int annee,mois,jour,correctif,difference,n;
char saisie[5];
bool correct;
int tab_aux[12];
int tab_duree [12]={31,28,31,30,31,30,31,31,30,31,30,31};
char calendrier[13][10]={"janvier","fevrier","mars","avril","mai","juin",
"juillet","aout","septembre","octobre","novembre","decembre"};
char semaine[8][10]={"lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"};

int main(int argc, char* argv[])


{
do
{
correct=true;
printf("Entrez une annee (comprise entre 1960 et 2099):");
scanf("%d",&annee);

if(n>4||annee==0||annee2099)//eviter une saisie
{
correct=false;
printf("Recommencez!");
}
} while(correct==false);
if((annee-1960)%4==0) //savoir si l'annee est bissextile
correctif=1;
else
correctif=0;
tab_duree[1]=28+correctif;
do
{
correct=true;
printf("Entrez un mois (compris entre 1 et 12):");
scanf("%d",&mois)



}
while(correct==false);
do
{
correct=true;
printf("Entrez un jour (compris entre 1 et 31):");
scanf("%d",&jour)
cin>>saisie;
int n=strlen(saisie);
jour=atoi(saisie);
if(n>2||jourtab_duree[mois-1]) //éviter une saisie incorrecte
{
correct=false;
if(mois!=2)
printf("Recommencez!Le mois de ",calendrier[mois-1]," compte ",tab_duree[mois-1]," jours",endl);
if(mois==2)
{
if(correctif==0)
printf("Recommencez!Le mois de fevrier d'une annee non bissextile compte 28 jours");
else
printf("Recommencez!Le mois de fevrier d'une annee bissextile compte 29 jours");
}
}
} while(correct==false);

// référence choisie : l'année 2099 qui est bissextile et dont le premier
// janvier tombait un samedi.On pourra vérifier!
// ****** premiére étape******
// Déterminer le jour de la semaine correspondant au premier janvier d'une
// année quelconque comprise entre 1960 et 2099

difference=2099-annee;
int jr; //jr=1 correspond au lundi,jr=2 au mardi...
int decalage;
decalage=difference+floor(difference/4); //tenir compte du nombre d'annees bissextiles
jr=6-decalage%7; //6 pour le samedi de l'an 2099
if(jr==0)
jr=7;
printf("le premier janvier de l'annee que vous avez entrer etait un:"

4 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
10 mai 2006 à 11:20
Quel est exactement le problème ?
++
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
10 mai 2006 à 11:44
C'est pas possible tu te fous du monde !!! Tu as lu ce que je t'ai mis dans l'auitre post au moins ? Si non le voilà :

"Ce que je veux savoir c'est ce qu'il ne fonctionne pas ? (compilation,
mauvais résultat affiché, plantage du programme en cours
d'exécution,...)"

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
10 mai 2006 à 17:16
"l'année 2099 qui est bissextile" ??????

if (R=29){
R=28;
}
else if(R=28,R19>10);
{R=27;
}

ça c'est n'imp en série.

le premier if est une affectation, pas une comparaison, donc ça met R à 29 et le résultat de l'affectation (29) sert au test du if qui est VRAI
en suite R passe à 28.
le else est don jamais exécuté et vu le ";" à la fin, le bloc qui sui ne fait pas parti du else et est toujours exécuté. Donc R passe à 27.

de plus le test du else if est chelou
affectation + la virgule doit être un && je suppose
0
cs_badramus Messages postés 15 Date d'inscription samedi 6 mai 2006 Statut Membre Dernière intervention 15 mai 2006
12 mai 2006 à 10:51
:
je voudrai ajouter le nom et prenom de chaque etudiant
Calculer la moyenne en considerant le coefficient de la matiere.
Comment pourrai je realiser ce programme
Merci
Voici ce que j'ai pu faire pour l'instant
#include <stdio.h>
#include <math.h>

main() {

/* Déclaration des variables utilisees dans le programme */

float Notes[26][10], MoyEtu[26], MoyDev[10];
float TotalDev=0, TotalEtu=0;
int NbEtu, NbDevoirs, i, j;


/* Saisie du nombre de devoirs et d'etudiants */

printf("Entrez le nombre de devoirs: ");
scanf("%i", &NbDevoirs);
printf("Entrez le nombre d'etudiants: ");
scanf("%i", &NbEtu);


/* remplissage du tableau Notes. on demande toute les notes du premier etudiant
avant de passer a l'etudiant suivant. pour cela on se sert de deux boucles for
imbriquees. */

for (i=1;i<=NbEtu;i++){
for (j=1;j<=NbDevoirs;j++){
printf("Entrez la note de l'etudiant %i au devoir %i: ",i,j);
scanf("%f",&Notes[i][j]);
}
}


/* Calcul de la moyenne de chaque etudiant */

for (i=1;i<=NbEtu;i++){
for (j=1;j<=NbDevoirs;j++){
TotalDev=TotalDev + Notes[i][j];
}
MoyEtu[i] = TotalDev / NbDevoirs;
TotalDev=0;
}


/* Calcul de la moyenne de la classe pour chaque devoir */

for (j=1;j<=NbDevoirs;j++){
for (i=1;i<=NbEtu;i++){
TotalEtu=TotalEtu + Notes[i][j];
}
MoyDev[j] = TotalEtu / NbEtu;
TotalEtu=0;
}


/* affichage de la moyenne de chaque etudiant */

printf("\n");
for (i=1;i<=NbEtu;i++) {
printf("Moyenne de l'etudiant %i : %0.1f\n",i,MoyEtu[i]);
}
printf("\n");


/* affichage de la moyenne de la classe pour chaque devoir */

for (j=1;j<=NbDevoirs;j++) {
printf("Moyenne du devoir %i : %0.1f\n",j,MoyDev[j]);
}


/* on quitte le programme */
return 0;
}


Badramus
0
Rejoignez-nous