Probleme en langage c

chungech -  
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
jai pas compri poukoi la compilation plante en langage c

#include <stdio.h>
#include <stdlib.h>


int datevalide(int jour,int moi,int an){
int njmax;
if (an>0) {
if (moi<12){
switch (moi)
case 1:3:5:7:8:10:11:{njmax=31;break;}
case 4:6:9:12:{njmax=30;break;}
case 2:{
if (an%4==0) njmax=28;
else njmax=29;
break;
}
else return 0;}
else return 0}
if (jour<njmax) return 1;
else return 0;
}
void main(){
int jour, moi,ans;
do
{
printf("entrez jour moi ans");
sacnf("%d%d%d",&jour,&moi,&ans);
}
while (datevalide(jour,moi,ans)==1);
puts("votre date est valide elle est %d,%d,%d",jour,moi,ans);
system("pause");
}
A voir également:

16 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
quel est le message d'erreur du compilateur et a quel ligne ?
0
chungech Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
11 11 case outside of switch
11 14 expression syntaxe
30 51 founction call mising
0
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   29
 
salut!
y'a un sacnf au lieu de scanf ( mais c'est peut être une erreur de frappe si il n'y a pas eu de copier/coller)

et je n'aurai pas mis de ";" après la parenthèse ")" du while. Mais donne nous le mesage d'erreur car c'est peut être encore autre chose.

Sinon j'en profite pour demander également autre chose à propos de la commande system(" ") que tu utilises. "pause", ca sert vraiment à faire une pause dans le programme? du genre un sleep?
0
chungech Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
le probleme c'est switsh tous les autres ereur j'ai pu les coriger svp aisez moi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   29
 
ok alors...case outside of switch.....j'ai pas mes programmes sous les yeux pour verifier la syntaxe exact mais c'est
switch (..)
{ case:1:.....;
case:2:....;
}
il te manques des {} qui étaient mal positionné case 1:3:5:7:8:10:11:{njmax=31;break;} devient case 1:3:5:7:8:10:11:njmax=31;break;
0
chungech Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
merci
mais lors de l'execution le programme donne toujour une date fause maime si elle est vrai

#include <stdio.h>
#include <stdlib.h>


int datevalide(int jour,int moi,int an){
int njmax;
if (an>0) {
if (moi<=12){
switch (moi){
case 1,3,5,7,8,10,11:{njmax=31;break;}
case 4,6,9,12:{njmax=30;break;}
case 2:{
if (an%4==0) njmax=28;
else njmax=29;
break;
}
}
} else return 0;
}else return 0;
if (jour<njmax) return 1;
else return 0;
}
void main(){
int JOUR, MOI,ANS;

printf("entrez jour moi ans");
scanf("%d%d%d",&JOUR,&MOI,&ANS);
if (datevalide(JOUR,MOI,ANS)==0)puts("faux");
else puts("vrai");

system("pause");
}
0
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   29
 
avant de partir tu voudrai pas me raconter pour le "system("pause"); ??? et n'oublie pas de marquer le problème comme résolu. ;o)
sinon, bonne nuitée!
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
system("pause") c'est pour metre le programme en pause pour qu'on est le tps de voir ce qui se passe sinon le terminale s'ouvre et se ferme presque immediatement
0
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   29
 
merci mype!!
C'est une sorte de sleep qu'on ne peut pas parametrer alors si je comprend bien.
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
on peut dire ça comme ça...
un sleep a l'infini
0
chungech Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
merci
mais lors de l'execution le programme donne toujour une date fause maime si elle est vrai
je suis un etudiant a l'ecole superieur des sciences et techniques de tunis chaque semaine on fait un tp c'est le tp de cette semaine
une fonction qui permet de retourner 1 si date valide 0 si date invalide pour system("pause") cest notre prof qui nous a dit de l'etuliser
normalement il est un docteur en programation
#include <stdio.h>
#include <stdlib.h>


int datevalide(int jour,int moi,int an){
int njmax;
if (an>0) {
if (moi<=12){
switch (moi){
case 1,3,5,7,8,10,11:{njmax=31;break;}
case 4,6,9,12:{njmax=30;break;}
case 2:{
if (an%4==0) njmax=28;
else njmax=29;
break;
}
}
} else return 0;
}else return 0;
if (jour<njmax) return 1;
else return 0;
}
void main(){
int JOUR, MOI,ANS;

printf("entrez jour moi ans");
scanf("%d%d%d",&JOUR,&MOI,&ANS);
if (datevalide(JOUR,MOI,ANS)==0)puts("faux");
else puts("vrai");

system("pause");
}
0
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   29
 
a ce moment là, y'aurai pas une commande pour annuler "pasue" et reprendre ?
....euh..je crois que je viens de dire une bétise. On ne peut pas reprendre puique le programme va rester en pause....c'est un peu tard pour moi.
En faite, je cherche à mettre un programme en "pause" avec tous ses processus fils et je ne sais pas trop comment je vais faire.....j'ouvrirai un nouveau message a l'occasion ou si t'as la réponse, on voit en privé car ce n'est pas le sujet original.
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
j'ignore comment on fais ce que tu veux faire
moi j'utilise jamais cette fonction car mon compilateur le fait automatiquement ;)
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
je pense que au lieu d'utiliser un switch avec un if se serait plus simple ici
0
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   29
 
ce ne serai pas une histoire de "&" à placer devant" jour" "mois" "ans"...à la déclaration ou l'apel de la fonction datevalide?
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
essaye ça sauf si tu tiens vraiment a ton switch ;)

#include <stdio.h>
#include <stdlib.h>


int datevalide(int jour,int moi,int an){
    int njmax;

    if (an>0) {
        if (moi<=12){
            if(moi== 1 || moi ==3) njmax=31;
            if(moi== 5 || moi ==7) njmax=31;
            if(moi == 8 || moi >= 10) njmax=31;
            if(moi == 4 || moi ==6 ) njmax=30;
            if(moi == 9 || moi ==12) njmax=30;
            if(moi==2){
        if (an%4==0) njmax=28;
            else njmax=29;}
        }
    else return 0;
    }
else return 0;
if (jour<njmax) return 1;
    else return 0;
}

void main(){
int JOUR, MOI,ANS;

printf("entrez jour moi ans :");
scanf("%d%d%d",&JOUR,&MOI,&ANS);
if (datevalide(JOUR,MOI,ANS)==0)puts("faux");
else puts("vrai");

system("pause");
}
0
Carri€ Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   29
 
Bonjour!
Je pense que mype a convaincu avec sa solution ;o)
0