IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probleme avec une boucle


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut Probleme avec une boucle
    Ma boucle est censee continuer a inviter l'utilisateur a entrer une valeure entre 1 et 10000 jusqu'a ce que 0 est entree... ca a l'air simple mais j'ai essaye plusieurs logiques illogiques sans succes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        while ( company_ID != 0 ) {
          printf("\n Enter ID of company to search for (0 to quit) : ");
          scanf("%d", &company_ID);  
     
          companyP = TreeFind(tree, company_ID);
     
        if (companyP == NULL){ 
             if ( company_ID == 0 ) break; // breaking the condition if the KEY is 0
                                           // since 0 is our charcater to quit the prog
             fprintf(stderr, "\nError! Company ID \"%d\" not found.\n", company_ID);
             }

  2. #2
    Membre chevronné Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Par défaut
    Oui, ça a l'air simple, mais vous postez à 2h18 et vous avez essayé "plusieurs logiques illogique", bref vous êtes fatigué et tournez en rond à partir sans doute d'une petite erreur fortuite au départ. Et vous aurez certainement trouvé vous-même quand vous lirez cette réponse, en remettant votre truc à plat.

    Je ne sais pas trop ce que vous voulez faire lorsque la valeur saisie est 0, avant de finir la boucle. Apparemment appeler TreeFind() mais ne pas afficher que TreeFind(tree, 0) renvoie NULL. Je ne suis pas certain que ce soit exactement ce que vous souhaitez.
    Il faudrait peut-être que vous amélioriez la saisie, mais c'est un autre problème.
    Repartez d'un modèle comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
     
    int main(void) {
    	bool fini = false;
    	int company_ID;
    	while (!fini) {
    		printf("\n Enter ID of company to search for (0 to quit) : ");
    		scanf("%d", &company_ID);
    		/*
    		 * Saisie de company_ID, à revoir sans doute
    		 */
     
    		/*
    		 * Ce qui doit être fait pour toute valeur de company_ID
    		 */
    		puts("saisie OK");
    		if (company_ID == 0) {
    			/*
    			 * Ce qui doit être fait pour company_ID == 0 (donc une fois)
    			 */
    			puts("saisie == 0");
    			fini = true;
    		} 
    		else {
    			/*
    			 * Ce qui doit être fait pour company_ID != 0
    			 */
    			puts("saisie != 0");			
    		}
    	}
    	printf("Boucle finie, %d\n", company_ID);
    	return EXIT_SUCCESS;
    }
    ou avec un do ... while qu'on oublie parfois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void) {
    	int company_ID;
    	do {
    		printf("\n Enter ID of company to search for (0 to quit) : ");
    		scanf("%d", &company_ID);
    		/*
    		 * Saisie de company_ID, à revoir sans doute
    		 */
     
    		/*
    		 * Ce qui doit être fait pour toute valeur de company_ID
    		 */
    		puts("saisie OK");
    		if (company_ID == 0) {
    			/*
    			 * Ce qui doit être fait pour company_ID == 0 (donc une fois)
    			 */
    			puts("saisie == 0");
    		} 
    		else {
    			/*
    			 * Ce qui doit être fait pour company_ID != 0
    			 */
    			puts("saisie != 0");			
    		}
    	}while (company_ID != 0);
    	printf("Boucle finie, %d\n", company_ID);
    	return EXIT_SUCCESS;
    }

  3. #3
    Membre éprouvé Avatar de siegfried64
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 78
    Par défaut
    vu que vous n avez pas specifié ce qu etais le problem je pourrais pas avec precision le mentionner, mais je pense que le problem est dans scanf(), apres chaque scanf() vous devez vider le buffer pour que la boucle continue normalement.
    ajoute ce code apres chaque scanf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(getchar()!='\n');
    essaie avec ce code, et avant ca soit sure d avoir declaré compagny_ID comme un pointeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while ( company_ID != 0 ) {
          printf("\n Enter ID of company to search for (0 to quit) : ");
          scanf("%d", &company_ID);  
          while(getchar()!='\n'); /*vider le buffer*/
          if ( company_ID == 0 ) break; /*quitter si 0*/
     
          companyP = TreeFind(tree, company_ID);
     
        if (companyP == NULL){ 
                 fprintf(stderr, "\nError! Company ID \"%d\" not found.\n", company_ID);
             }

Discussions similaires

  1. VBA ACCESS probleme avec une boucle for
    Par maldini dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/04/2010, 09h52
  2. probleme avec une boucle infinie
    Par hunter99 dans le forum C++
    Réponses: 3
    Dernier message: 26/12/2007, 23h37
  3. Probleme avec une boucle
    Par restesouple dans le forum Windows Forms
    Réponses: 14
    Dernier message: 04/10/2007, 10h47
  4. [VBA-E] PRobleme avec une boucle DO..LOOP WHILE
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/07/2006, 01h04
  5. Ksh, problème avec une simple boucle for
    Par herzleid dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2006, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo