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 :

Boucler un programme (while)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut Boucler un programme (while)
    Salut à tous,

    J'ai un souci dans un petit programme que je voulais faire, je n'arrive pas à boucler le programme pour qu'il se repête suivant que l'on entre O (oui) ou N (non), voilà mon code :

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
     
    int main()
     
    {
        int i, n;
        int nb_cherche=0;
        int T[10];
        int continuer=0;
        char c;
        srand(time(NULL));
        /*MISE EN PLACE D UNE CONDITION BOOLEENNE DE RELANCE DE PROGRAMME*/
     
        while(!continuer)
     
        {
          /*REMPLISSAGE DU TABLEAU AVEC DES NOMBRES ALEATOIRES*/
          printf("\nRemplissage du tableau...\n");
          for(i=0 ; i<10 ; i++)
          {
    	T[i] = (rand() % 10) + 1;
    	printf("La case n°%i a prit la valeur : %i\n", i, T[i]);
          }
          /*DEMANDE DE LA VALEUR A RECHERCHER*/
          printf("Entrez la valeur a rechercher dans le tableau : ");
          scanf("%i", &n);
          printf("Recherche de votre valeur...");
          /*ALGO DE RECHERCHE*/
          for(i=1 ; i<=10 ; i++)
          {
    	if(T[i] == n)
    	{
    	  nb_cherche = i+1;
    	  printf("Valeur trouvee en position : %i\n", nb_cherche);
    	}
          }
          if(nb_cherche==0)
          {
    	printf("La valeur n'a pas ete trouvee dans le tableau\n");
          }
          /*BOOLEEN DE RELANCE DU PROGRAMME*/
          do
     
          {
    	printf("Voulez vous continuer ? (O (oui), N (non)) : ");
    	scanf("%c", &c);
    	printf("Vous avez repondu : %c", c);
     
    	if(c == 'O')
    	{
    	  continuer = 0;
    	  printf("Le programme se relance...");
    	}
     
    	else
     
    	  continuer = 1;
     
          }
          while(c != ('O' || 'N'));
     
     
        }
        printf("FIN");
     
      return 0;
    }
    Et ca ne marche pas, le programme ne lit pas la valeur du caractère tapé...

    Une idée ? Merci =)

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hoa,

    Je n'ai pas épluché le reste, mais à ton avis, que fait ce test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          while(c != ('O' || 'N'));
    ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut
    Mmmh .. Tant que la variable c est différente du caractère O ou du caractère N ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut
    Donc tant que çà, alors répéter le do.. Non ?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Tant que la variable c est différente du caractère O ou du caractère N ?
    Non. L'expression entre parenthèses sera évaluée en premier tout d'abord (résultat d'un OU), puis le résultat comparé à "c".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(c != ('O' || 'N') );
    est équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(c != ( 1 || 1 ) );
    et donc à :

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 35
    Par défaut
    D'accord =) ;
    Donc pour tester entre deux caractères, comment on s'y prend ? sans parenthèse ? ou alors du type :

    TantQue c != 'O' OU c != 'N'

    ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/12/2010, 11h49
  2. Réponses: 1
    Dernier message: 10/02/2008, 20h13
  3. [MySQL] While qui ne fait que boucler
    Par helene38250 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/08/2007, 12h29
  4. Réponses: 9
    Dernier message: 30/05/2006, 18h44
  5. Réponses: 6
    Dernier message: 28/04/2006, 09h16

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