l_seringa Posté(e) le 6 avril 2006 Partager Posté(e) le 6 avril 2006 slt tout le monde. alors j'ai une question a posé:et merci d'avance pour vos reponse j'ai un programme qui doit m'affiché des erreur en cas si je le donne un nombre pas equivalent de ce qu'il doit avoir printf("entrer le nbre de sommets:\n"); scanf("%d",&ns); if(ns>100) printf("depassement de capacité\n"); c une partie du programme ou je doit pas avoir un nombre superieur a 100 et en cas de l'avoir je doit ecrire depassement de capacité et sortir directement du programme .alors comment faire?merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
shark_atlantis Posté(e) le 6 avril 2006 Partager Posté(e) le 6 avril 2006 Si j'ai bien compris, si t'as un nombre > 100 tu sors du programme. Donc: printf("entrer le nbre de sommets:\n"); scanf("%d",&ns); if(ns>100){printf("depassement de capacité\n"); return 0;} Si la valeur de retour de ton main est un int. Lien vers le commentaire Partager sur d’autres sites More sharing options...
epsilon0 Posté(e) le 6 avril 2006 Partager Posté(e) le 6 avril 2006 Si j'ai bien compris, si t'as un nombre > 100 tu sors du programme. Donc: printf("entrer le nbre de sommets:\n"); scanf("%d",&ns); if(ns>100){printf("depassement de capacité\n"); return 0;} Si la valeur de retour de ton main est un int. dans ce cas la il m'affiche mem pas le depassement e capacité.alors commnt faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 6 avril 2006 Partager Posté(e) le 6 avril 2006 dans ce cas la il m'affiche mem pas le depassement e capacité.alors commnt faire. Merci de te relire ?Qu'est ce que tu entends par dépassement de capacité ? Ton int peut aller bien au dela de 100. Il me semble qu'il y a une notion que tu n'as pas bien assimilé. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Solidus Posté(e) le 12 avril 2006 Partager Posté(e) le 12 avril 2006 Je pense qu'il a une sorte de valeur à ne pas dépasser par exemple sur un système industriel ceci peut se produire imagine dans une chaîne de montage de pack de bière si quelqu'un fait un programme en demandant combien de bière doivent être rentré dans le pack si la personne rentre 10 ben ca passe pas dans le pack et le robot l'est bête alors il casse la bière et faut surtout pas gâcher la bière alors il faut sortir du programme. Pour ton problème apres le printf fait un getchar() ( pour que tu vois le message d'erreur ) et ensuite soit le return 0 de shark_atlantis ou alors un break; Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 14 avril 2006 Partager Posté(e) le 14 avril 2006 ...faut surtout pas gâcher la bière ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xfaillez Posté(e) le 15 avril 2006 Partager Posté(e) le 15 avril 2006 dans ce cas la il m'affiche mem pas le depassement e capacité.alors commnt faire. Il doit l'afficher mais tu n'as pas le temps de le voir que la fenêtre se ferme. Tu n'aurais pas ce problème si tu lances ton application depuis une console (ou fenêtre ms-dos selon ton OS). Bref : puts("entrer le nbre de sommets:"); scanf("%d",&ns); while(getchar() !='\n'); // vide le buffer d'entree mais pas trop necessaire dans le cas d'un int if(ns>100) { puts("depassement de capacité"); getchar(); return 0; } Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 15 avril 2006 Partager Posté(e) le 15 avril 2006 Pas besoin des getchar ici. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xfaillez Posté(e) le 15 avril 2006 Partager Posté(e) le 15 avril 2006 De quel getchar() parles-tu? Celui de la fin permet d'attendre avant de fermer la fenêtre. Pour l'autre, il permet de vider le tampon d'entrée. Imagine qu'il rentre une lettre à la place d'un int, il peut faire planter le programme. De toute façon, il faut éviter au maximum scanf(). Et quand on l'utilise, faut toujours vider le buffer, toujours :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Baldurien Posté(e) le 17 avril 2006 Partager Posté(e) le 17 avril 2006 Et donc, tu le fais même quand l'entier rentré est correct? if ( scanf("%d", &nb) != 1 ) { /* flush the buffer here */ while (getchar() != '\n'); } scanf est à déconseiller pour lire une chaîne, pour le reste c'est ok. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Xfaillez Posté(e) le 17 avril 2006 Partager Posté(e) le 17 avril 2006 On ne perd rien à le faire. Moi je n'utilise jamais scanf(), même pas pour un entier, quand je fais un vrai projet qui doit tenir la route. Je privilégie fgets() et strtol() Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.