PROGRAMME C
Fermé
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
-
12 déc. 2008 à 17:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 déc. 2008 à 18:36
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 déc. 2008 à 18:36
A voir également:
- PROGRAMME C
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
13 réponses
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
12 déc. 2008 à 17:29
12 déc. 2008 à 17:29
bonjour,
et que se passe-t-il au juste ?
et que se passe-t-il au juste ?
Utilisateur anonyme
12 déc. 2008 à 17:32
12 déc. 2008 à 17:32
A mon avis c'est parce que tu n'as pas initialisé la variable n...
Et puis tu devrais mettre des break; à la fin de chaque case.
Et puis tu devrais mettre des break; à la fin de chaque case.
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
12 déc. 2008 à 17:36
12 déc. 2008 à 17:36
Salut Dragasani,
je ne pense pas que son problème vienne de là car le test sur la valeur de n est effectué systématiquement après une saisie de son utlisateur, s'il avait utilisé une boucle while il aurait été possible de ne jamais rentrer dans la boucle si n était en dehors des conditions (n>0&&n<13) du à la valeur (quelconque et certainement pourrie) se trouvant à l'emplacment mémoire de n.
je ne pense pas que son problème vienne de là car le test sur la valeur de n est effectué systématiquement après une saisie de son utlisateur, s'il avait utilisé une boucle while il aurait été possible de ne jamais rentrer dans la boucle si n était en dehors des conditions (n>0&&n<13) du à la valeur (quelconque et certainement pourrie) se trouvant à l'emplacment mémoire de n.
Utilisateur anonyme
>
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
12 déc. 2008 à 17:37
12 déc. 2008 à 17:37
Oulala oui honte à moi je devrais aller me coucher lol
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
12 déc. 2008 à 17:33
12 déc. 2008 à 17:33
est ce que mon condition d'arrêt est juste dans mon boucle?
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
12 déc. 2008 à 17:38
12 déc. 2008 à 17:38
effectivement comme le dit Dragasani, il faut mettre des break à la fin de chaque case sinon tu auras certainement à chaque fois soit "décembre" à ton affichage, soit la valeur par defaut de ton printf de ton "default"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
12 déc. 2008 à 17:41
12 déc. 2008 à 17:41
et sinon ta condition est bien formulée mais nous pensons que cela vient du fait qu'il n'y ai pas de "break" à tes "case"
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
12 déc. 2008 à 17:41
12 déc. 2008 à 17:41
mon problème c'est que la boucle while n'exécute plus?
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
>
Utilisateur anonyme
12 déc. 2008 à 17:48
12 déc. 2008 à 17:48
j'ai fait la même ... lol
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
12 déc. 2008 à 17:43
12 déc. 2008 à 17:43
tu n'as meme pas ton printf qui marche ?
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
12 déc. 2008 à 17:43
12 déc. 2008 à 17:43
jeveux que le traitement n'execute plus sauf pour les valeurs entre 1 et 12?
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
12 déc. 2008 à 17:47
12 déc. 2008 à 17:47
en fait il faut mettre ton switch dans ta boucle whilme sinon boucle infinie de printf scanf
Ce code là fonctionne :
#include <stdio.h>
void main() {
int n=1;
while ( (n > 0) && (n < 13)){
printf("Saisissez un nombre : ");
scanf("%d",&n);
switch(n){
case 1 :printf("janvier\n");break;
case 2 : printf("fevrier\n");break;
///le reste
default:printf("bye bye\n");break;
}
}
et voilà le tour est joué.
Ce code là fonctionne :
#include <stdio.h>
void main() {
int n=1;
while ( (n > 0) && (n < 13)){
printf("Saisissez un nombre : ");
scanf("%d",&n);
switch(n){
case 1 :printf("janvier\n");break;
case 2 : printf("fevrier\n");break;
///le reste
default:printf("bye bye\n");break;
}
}
et voilà le tour est joué.
Mastaking
Messages postés
35
Date d'inscription
samedi 10 mars 2007
Statut
Membre
Dernière intervention
5 septembre 2011
14
12 déc. 2008 à 17:47
12 déc. 2008 à 17:47
Bonjour Amin,
normal, ta condition de rupture de boucle n'est pas bonne. En fait la tu lui dis, demande lui un entier tant qu'il entre un entier compris entre 1 et 12. Tu dois justement poser la condition contraire.
de plus ton switch est incomplet, mais j'imagine que tu le sais. Par contre tu as oublie les break; ce qui signifie que quoi qu'il arrivem les instructions suivant ton "saut" seront toutes executees.
bref, voici ton code corrige ( je me suis permis certaines libertes ) :
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void)
{ int n;
do
{ printf("donner un entier : ");
scanf("%d",&n);
} while(!(n>=1)&&!(n<=12));
printf("Vous avez choisi comme moi : ");
switch(n){
case 1:printf ("janvier \n"); break;
case 2:printf ("fevrier \n"); break;
case 3:printf ("mars \n"); break;
case 4:printf ("avril \n"); break;
case 5:printf ("mai \n"); break;
case 6:printf ("juin \n"); break;
case 7:printf ("juillet \n"); break;
case 8:printf ("aout \n"); break;
case 9:printf ("septembre \n"); break;
case 10:printf ("octobre \n"); break;
case 11:printf ("novembre \n"); break;
case 12:printf ("decembre \n"); break;
}
system("PAUSE");
}
normal, ta condition de rupture de boucle n'est pas bonne. En fait la tu lui dis, demande lui un entier tant qu'il entre un entier compris entre 1 et 12. Tu dois justement poser la condition contraire.
de plus ton switch est incomplet, mais j'imagine que tu le sais. Par contre tu as oublie les break; ce qui signifie que quoi qu'il arrivem les instructions suivant ton "saut" seront toutes executees.
bref, voici ton code corrige ( je me suis permis certaines libertes ) :
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void)
{ int n;
do
{ printf("donner un entier : ");
scanf("%d",&n);
} while(!(n>=1)&&!(n<=12));
printf("Vous avez choisi comme moi : ");
switch(n){
case 1:printf ("janvier \n"); break;
case 2:printf ("fevrier \n"); break;
case 3:printf ("mars \n"); break;
case 4:printf ("avril \n"); break;
case 5:printf ("mai \n"); break;
case 6:printf ("juin \n"); break;
case 7:printf ("juillet \n"); break;
case 8:printf ("aout \n"); break;
case 9:printf ("septembre \n"); break;
case 10:printf ("octobre \n"); break;
case 11:printf ("novembre \n"); break;
case 12:printf ("decembre \n"); break;
}
system("PAUSE");
}
Mastaking
Messages postés
35
Date d'inscription
samedi 10 mars 2007
Statut
Membre
Dernière intervention
5 septembre 2011
14
12 déc. 2008 à 17:56
12 déc. 2008 à 17:56
Ah bah dans ce cas la c'est effectivement la bonne condition de rupture de boucle et il suffit de mettre le switch dans la boucle :
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void) {
int n;
do
{
printf("donner un entier (-1 pour arreter): ");
scanf("%d",&n);
printf("Vous avez choisi comme moi : ");
switch(n){
case 1:printf ("janvier \n"); break;
case 2:printf ("fevrier \n"); break;
case 3:printf ("mars \n"); break;
case 4:printf ("avril \n"); break;
case 5:printf ("mai \n"); break;
case 6:printf ("juin \n"); break;
case 7:printf ("juillet \n"); break;
case 8:printf ("aout \n"); break;
case 9:printf ("septembre \n"); break;
case 10:printf ("octobre \n"); break;
case 11:printf ("novembre \n"); break;
case 12:printf ("decembre \n"); break;
system("PAUSE");}
}while((n>=1)&&(n<=12));
}
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void) {
int n;
do
{
printf("donner un entier (-1 pour arreter): ");
scanf("%d",&n);
printf("Vous avez choisi comme moi : ");
switch(n){
case 1:printf ("janvier \n"); break;
case 2:printf ("fevrier \n"); break;
case 3:printf ("mars \n"); break;
case 4:printf ("avril \n"); break;
case 5:printf ("mai \n"); break;
case 6:printf ("juin \n"); break;
case 7:printf ("juillet \n"); break;
case 8:printf ("aout \n"); break;
case 9:printf ("septembre \n"); break;
case 10:printf ("octobre \n"); break;
case 11:printf ("novembre \n"); break;
case 12:printf ("decembre \n"); break;
system("PAUSE");}
}while((n>=1)&&(n<=12));
}
amin009
Messages postés
112
Date d'inscription
jeudi 2 octobre 2008
Statut
Membre
Dernière intervention
20 février 2010
12 déc. 2008 à 18:05
12 déc. 2008 à 18:05
voici le code ,mais toujours demende de saisir un entier:
#include <stdio.h>
void main()
{ int n ;
do
{ printf("donner un entier");
scanf("%d",&n);
switch (n)
{ case 1:printf ("janvier");
break;
case 2:printf ("fevrier");
break;
case 3:printf("mars");
break;
case 4: printf("avril");
break;
case 5: printf("mai");
break;
case 6 :printf("juin");
break;
case 7 : printf("juillet");
break;
case 8: printf("aout");
break;
case 9: printf("septembre");
break;
case 10: printf("octobre");
break;
case 11 :printf("novembre");
break;
case 12 :printf("decembre");}
}
while ((n>=1)&&(n<=12));
}
#include <stdio.h>
void main()
{ int n ;
do
{ printf("donner un entier");
scanf("%d",&n);
switch (n)
{ case 1:printf ("janvier");
break;
case 2:printf ("fevrier");
break;
case 3:printf("mars");
break;
case 4: printf("avril");
break;
case 5: printf("mai");
break;
case 6 :printf("juin");
break;
case 7 : printf("juillet");
break;
case 8: printf("aout");
break;
case 9: printf("septembre");
break;
case 10: printf("octobre");
break;
case 11 :printf("novembre");
break;
case 12 :printf("decembre");}
}
while ((n>=1)&&(n<=12));
}
daronmaster
Messages postés
326
Date d'inscription
vendredi 12 janvier 2007
Statut
Membre
Dernière intervention
11 mai 2009
44
12 déc. 2008 à 18:15
12 déc. 2008 à 18:15
et alors c'est bon maintenant ? si oui passe en résolu
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
12 déc. 2008 à 18:36
12 déc. 2008 à 18:36
Salut,
Je donne une autre façon de faire :
A noter, que main() doit renvoyer un int (donc pas void).
Cdlt
Je donne une autre façon de faire :
A noter, que main() doit renvoyer un int (donc pas void).
#include <stdio.h> int main(void){ char *mois[]={"janvier","fevrier","mars","avril","mai","juin","juillet","aout","septembre","octobre","novembre","decembre"}; int n; do{ printf("donnez un entier : ");fflush(stdout); scanf("%d",&n); if(n>0 && n<11) puts(mois[n-1]); }while(n>0 && n<11); return 0; }
Cdlt