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 :

Problème de boucle


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème de boucle
    Salut, je suis en première année d'informatique de gestion, et je débute en C. Pour ce premier exercice, je dois faire un programme qui convertit les degrés celsius en Fahrenheit. Pour celà je dois utiliser la boucle for (imposé par l'exercice) en sachant que Celsius max=100 que celsius minimum =-20 et que le pas est de 5 (avec un petit tableau pour la mise en page). Le prob c'ets que ma boucle fonctionne pas et je sais pas pourquoi (le prof nous a même pas expliqué les boucles déjà ) voici 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
     
    #include <stdio.h>
     
    int main(void)
    {
       int fahr, cel;
     
       printf ("|--------|--------|\n");
       printf ("|   C.   |   F.   |\n");
       printf ("|--------|--------|\n");
     
       for (cel=100; cel<=-20;cel= cel-5)
       {
          fahr =(9.0*cel)/5 +32;
       }
     
       printf ("|  %3d   |%5d   |\n", cel, fahr);
     
       printf ("|--------|--------|\n");
       return(fahr);
    }
    Voilà, a noter que je travaille sur Unix avec le compilateur gcc
    Merci de m'aider, ça serait gentil ^^'

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    bien le bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for (cel=100; cel<=-20;cel= cel-5)
    cette boucle ne tourne pas. ta condition d'arret n'est pas la bonne.
    tu commences avec cel = 100 puis a chaque tour de boucle tu decrementes cel de 5. Et tu boucles tant que cel <=-20 . il y a une incoherence.

    cherche la bonne condition d'arret de ta boucle.

    de plus, ton affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     printf ("| %3d |%5d |\n", cel, fahr);
    doit lui aussi se trouver dans la boucle, sans quoi il ne se fera qu'une fois.

  3. #3
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Le code correct est le suivant


    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
    #include <stdio.h> 
     
    int main(void) 
    { 
      /* -ed- je préfère une ligne par déclaration */
      int fahr
      int cel;
     
      printf ("|--------|--------|\n"); 
      printf ("| C. | F. |\n"); 
      printf ("|--------|--------|\n"); 
     
      /*  -ed- la condition est erronée. */
      /*  -ed- la condition correcte est boucle tant que 'cel' est plus grand ou égal à -20 */
      /* une autre forme est : for (cel = 100; cel >= -20; cel -= 5)  */
      for (cel=100; cel>=-20;cel= cel-5) 
      { 
        fahr =(9.0*cel)/5 +32; 
        /* -ed- on imprime le résultat dans la boucle */
        printf ("| %3d |%5d |\n", cel, fahr); 
      } 
     
      printf ("|--------|--------|\n"); 
     
      /* -ed- pourquoi retourner la dernière valeur de 'fahr'? */
      /* -ed- je retourne 0 qui indiquer que tout est en ordre */
      return (0); 
    }

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par jowo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <stdio.h> 
     
    int main(void) 
    { 
      /* -ed- je préfère une ligne par déclaration */
    Bizarre ces '-ed-'. Je ne me souviens pas avoir écrit ça ....

  5. #5
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    pourquoi le '-ed-' est une marque déposée et protégée?

    Si oui, priez de m'excuser

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par jowo
    pourquoi le '-ed-' est une marque déposée et protégée?

    Si oui, priez de m'excuser
    Non, mais c'est celle que j'utilise habituellement pour signer mes commentaires... (emmanuel delahaye), et ce depuis plus de 5 ans (voir les archives de Usenet sur clc et fclc -hs- (Homer Simpson), puis -ed-)

    Il y a suffisament de combinaisons de lettres pour éviter la confusion... Question de bon sens...

  7. #7
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Veuillez accepter toutes mes plus plates excuses.

    Juré promis, je ne recommencerai plus.

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par jowo
    Veuillez accepter toutes mes plus plates excuses.

    Juré promis, je ne recommencerai plus.
    Ok, mais que ça ne t'empêche pas de signer tes commentaires qui sont plutôt bons. (Bien que je n'aurais pas mis d'accents pour des questions de portablité...)

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup celà fonctionne j'ai compris maintenant pourquoi ça fonctionnait pas encore merci^^

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/01/2006, 17h44
  2. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  3. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  4. Problème de boucle
    Par Louis-Guillaume Morand dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/09/2005, 09h10
  5. Problème de boucle
    Par basclln dans le forum C++
    Réponses: 19
    Dernier message: 02/04/2005, 09h13

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