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 :

affichage


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut affichage
    Bonjour , j'ai écrit ce petit programme en C , qui converti les degrés celsius en degrés fahrenheit :

    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
    #include <stdio.h>
     
    int main()
    {
     
      float fahr, celsius;
      int mini, maxi;
     
      mini = -17.8;
      maxi = 148;
     
      while (mini <= maxi);
       {
          fahr = (9.0/5.0) * celsius -32;
          printf("%3.0d %6.1d\n", celsius, fahr);
      }
    return 0;
    }
    Donc je compile , pas de soucis , mais quand j'exécute , rien ne s'affiche , est ce normal ?

    merci

  2. #2
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut

    Rajoute un : juste avant le "return 0;".

    Nas'

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Non, mais ce qui est bizarre, ici, c'est la boucle infinie, doublée d'un bug de boucle vide...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: affichage
    Citation Envoyé par Bibouda
    Bonjour , j'ai écrit ce petit programme en C , qui converti les degrés celsius en degrés fahrenheit :
    Donc je compile , pas de soucis , mais quand j'exécute , rien ne s'affiche , est ce normal ?
    Il y a un ';' après le while. C'est normal ?

    A qui sert cette boucle ?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    Bon je me dois d'apporter des précisions :

    voici un programme de départ qu'on me présente , il converti les degrés fahrenheit en degrés celsius :

    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
    #include <stdio.h>
     
    main()
    {
       int fahr, celsius;
       int mini, maxi, intervalle;
     
       mini = 0;
       maxi = 300;
       intervalle = 20;
     
     
       fahr = mini;
       while (fahr <= maxi)
        {
             celsius = 5 * (fahr-32) / 9;  
             printf ("%d\t%d\n", fahr, celsius);
             fahr = fahr + intervalle;
     
     
        }
    retur 0;
    }
    il marche parfaitement .


    On me demande de faire l'inverse , donc un programme qui converti les degrés celsius en fahrenheit :

    Moi j'ai juste fait une inversion de formule entre les accolades de la boucle , et j'ai gardé la meme boucle qui me parait logique , tant que les degrés celsius n'atteingent pas plus de 148 , on exécute la boucle .

    pour le ';' après le while oui erreur , mais j'ai ouvert mon fichier avec emacs , j'ai enlevé ce ';' , j'ai tapé cat fichier.c dans mon shell , et çà m'affiche tjs le code avec ce ';' malgré que j'ai sauvegardé...[/code]

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    quelqu'un pourrait il me dire pourquoi mon programme m'affiche sans arrêt des -2.0.... svp?

  7. #7
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Tu pourrais nous mettre le bon code de ton programme stp?
    Parce que le premier que tu as donné n'affichait rien (en plus, la variable celsius n'est jamais initialisée... ni incrémentée...), et le second c'est pour la conversion inverse...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    mais non , à la base j'ai ce programme :

    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
    #include <stdio.h>
     
    int main()
    {
       int fahr, celsius;
       int mini, maxi, intervalle;
     
       mini = 0;
       maxi = 300;
       intervalle = 20;
     
     
       fahr = mini;
       while (fahr <= maxi)
        {
             celsius = 5 * (fahr-32) / 9; 
             printf ("%d\t%d\n", fahr, celsius);
             fahr = fahr + intervalle;
     
     
        }
    return 0;
    }
    Ce programme converti les degrés fahrenheit en degrés celsius , il marche fort bien je l'ai testé .

    J'ai un exercice qui me demande d'écrire un programme qui converti les degrés celsius en degrés fahrenheit , et j'ai fait çà :

    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
     
    MessagePosté le: Dim Nov 06, 2005 15:20    Sujet du message: affichage
    Bonjour , j'ai écrit ce petit programme en C , qui converti les degrés celsius en degrés fahrenheit :
     
    Code:
    #include <stdio.h>
     
    int main()
    {
     
      float fahr, celsius;
      int mini, maxi;
     
      mini = -17.8;
      maxi = 148;
     
      while (mini <= maxi)
       {
          fahr = (9.0/5.0) * celsius -32;
          printf("%3.0d %6.1d\n", celsius, fahr);
      }
    return 0;
    }
     
    et quand j'exécute ce programme , le shell m'envois une liste interminable de -2.0 qui défile de bas en haut...
    Donc d'où vient le problème?
    Moi j'ai inversé la formule de départ , j'ai bien déclaré mes variables , à noter que là j'ai pas mis de variable intervalle... çà vient peut être d'un truc similaire , non?

  9. #9
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Bibouda
    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
     
    #include <stdio.h>
     
    int main()
    {
     
      float fahr, celsius;
      int mini, maxi;
     
      mini = -17.8;
      maxi = 148;
     
      while (mini <= maxi)
       {
          fahr = (9.0/5.0) * celsius -32;
          printf("%3.0d %6.1d\n", celsius, fahr);
      }
    return 0;
    }
    mini = -17.8 -> mini est declaré int
    printf("%3.0d %6.1d\n", celsius, fahr); -> celsius n'est initialisé nulle part de plus le format pour afficher des float est %f
    while (mini <= maxi) -> tu ne sort jamais de ta boucle mini et maxi ne sont jamais modifié donc ta boucle est infinie

    Je sais pas commen tu a fait pour convertir ca
    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
    #include <stdio.h>
     
    int main()
    {
       int fahr, celsius;
       int mini, maxi, intervalle;
     
       mini = 0;
       maxi = 300;
       intervalle = 20;
     
     
       fahr = mini;
       while (fahr <= maxi)
        {
             celsius = 5 * (fahr-32) / 9;
             printf ("%d\t%d\n", fahr, celsius);
             fahr = fahr + intervalle;
     
     
        }
    return 0;
    }
    En ca
    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
     
    #include <stdio.h>
     
    int main()
    {
     
      float fahr, celsius;
      int mini, maxi;
     
      mini = -17.8;
      maxi = 148;
     
      while (mini <= maxi)
       {
          fahr = (9.0/5.0) * celsius -32;
          printf("%3.0d %6.1d\n", celsius, fahr);
      }
    return 0;
    }
    Mais c'est completement faux
    On ne vas pas faire ton exo a ta place, tu nous ce que tu ne comprends pas.
    A part le
    le shell m'envois une liste interminable de -2.0 qui défile de bas en haut...

  10. #10
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Pense à rajouter une petite correction sur ta formule aussi.
    C'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fahr = (9.0/5.0) * celsius +32;
    et pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fahr = (9.0/5.0) * celsius -32;
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  11. #11
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    bon alors j'essaye de corriger 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
    #include <stdio.h>
     
    int main()
    {
     
      float fahr, celsius;
      float mini, maxi;
     
      mini = -17.8;
      maxi = 149.5;
      celsius = mini;
      while (mini <= maxi)
       {
          fahr = (9.0/5.0) * celsius + 32;
          printf("%3.0f %6.1f\n", celsius, fahr);
      }
    return 0;
    }
    qu'en dis tu?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Bibouda
    mais non , à la base j'ai ce programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       while (fahr <= maxi)
        {
             celsius = 5 * (fahr-32) / 9; 
             printf ("%d\t%d\n", fahr, celsius);
             fahr = fahr + intervalle;
     
     
        }
    et j'ai fait çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      while (mini <= maxi)
       {
          fahr = (9.0/5.0) * celsius -32;
          printf("%3.0d %6.1d\n", celsius, fahr);
      }
    Et tu trouves que ça ressemble ? La condition de sortie concerne 2 variables qui ne varient jamais dans la boucle. On ne sort donc jamais de la boucle.

    Commence par comprendre comment fonctionne le programme original au lieu de coder n'importe quoi.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Bibouda
    bon alors j'essaye de corriger mon code :
    <...>
    qu'en dis tu?
    J'en dis que tu n'as toujours rien compris au fonctionnement du code original et que tu t'obstines à écrire n'importe quoi sans chercher à comprendre. On peut programmer au hasard en ecrivant des combinaisons de caractères jusqu'à ce que ca marche, mais ça va prendre du temps...

  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    pour comprendre lorsqu'on débute, il faut effectuer à la main les instructions écrites, si tu l'avais fait tu aurais vu tout de suite que mini ne changeait pas dans la boucle.

    Avant de programmer en C, écris les algos en pseudo code, une fois qu'ils fonctionnent, traduits les en C, c'est la seconde étape, n'apprends pas le C, apprends à programmer d'abord.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Par défaut
    et non messieurs j'ai parfaitement saisi le truc , pour preuve je vais corriger :

    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
    #include <stdio.h>
     
    int main()
    {
     
      float fahr, celsius;
      float mini, maxi, intervalle;
     
      mini = -17.8;
      maxi = 149.5;
      celsius = mini;
      intervalle = 10.0;
      while (celsius <= maxi) /* ici j'avais juste fait une faute de frappe */
       {
          fahr = (9.0/5.0) * celsius + 32;
          printf("%3.0f %6.1f\n", celsius, fahr);
          celsius = celsius + intervalle;
      }
    return 0;
    }
    et la mon code est tout bon , il donne ce que je veux , je déclare les variables , je les initialise , la condition dans ma boucle est bonne , j'incrémente la valeur de départ de celsius par l'intervalle , et quand il dépasse 149.5 , il s'arrête , tout marche bien , j'ai tout saisi.

  16. #16
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Bibouda
    et non messieurs j'ai parfaitement saisi le truc , pour preuve je vais corriger :

    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
    #include <stdio.h>
     
    int main()
    {
     
      float fahr, celsius;
      float mini, maxi, intervalle;
     
      mini = -17.8;
      maxi = 149.5;
      celsius = mini;
      intervalle = 10.0;
      while (celsius <= maxi) /* ici j'avais juste fait une faute de frappe */
       {
          fahr = (9.0/5.0) * celsius + 32;
          printf("%3.0f %6.1f\n", celsius, fahr);
          celsius = celsius + intervalle;
      }
    return 0;
    }
    et la mon code est tout bon , il donne ce que je veux , je déclare les variables , je les initialise , la condition dans ma boucle est bonne , j'incrémente la valeur de départ de celsius par l'intervalle , et quand il dépasse 149.5 , il s'arrête , tout marche bien , j'ai tout saisi.
    Non mais genre.
    J'avais oublé la moitié des variables, j'avais pas mis les bon types, j'avais oublié d'initialisé des variables et plein d'autres trucs, et d'un post a l'autre paf c'est juste (j'ai pas regardé le code en profondeur, je suppose qu'il est juste).
    Hi hi hi...

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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