Probleme en langage c
chungech
-
Carri€ Messages postés 41 Statut Membre -
Carri€ Messages postés 41 Statut Membre -
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");
}
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");
}
Configuration: Windows XP Firefox 2.0.0.9
16 réponses
-
quel est le message d'erreur du compilateur et a quel ligne ?
-
11 11 case outside of switch
11 14 expression syntaxe
30 51 founction call mising -
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? -
le probleme c'est switsh tous les autres ereur j'ai pu les coriger svp aisez moi
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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; -
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");
} -
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! -
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
-
merci mype!!
C'est une sorte de sleep qu'on ne peut pas parametrer alors si je comprend bien. -
on peut dire ça comme ça...
un sleep a l'infini -
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");
} -
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. -
je pense que au lieu d'utiliser un switch avec un if se serait plus simple ici
-
ce ne serai pas une histoire de "&" à placer devant" jour" "mois" "ans"...à la déclaration ou l'apel de la fonction datevalide?
-
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"); } -
Bonjour!
Je pense que mype a convaincu avec sa solution ;o)