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 de format d`affichage(printf)


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut probleme de format d`affichage(printf)
    bonjour ,
    j`ai un programe qui est charge d`afficher les temperatures, negative et positive, masi mon probleme est que je voudrais qu`il me donne un alignement, les unite sous les unite, les dizaines sous les dizaines ainsi de suite, masi je n`arrive pas a le faire , voulez vous m`aidez...


    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
    
    #include<stdio.h>
    #include<conio.h>
    main()
    {
    int fahrenheit;
    float celsius;
     
    printf("fahrenheit\tcelsius\n");
    printf("\n");
    for(fahrenheit=0;fahrenheit<=212;fahrenheit++){
    celsius=(5.0/9.0)*(fahrenheit-32);
    printf("%d\t %+.3f\n", fahrenheit,celsius);
    }
    getch();
    return 0;
    }
    merci d`avance ....
    SMALTO

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Il me semble que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%3d %3d",12,20);
    permet un bon alignement car 3 "cases" sont réservées à chaque nombre.

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut dnas mon cas j`utilise des valeurs a virgule...
    et je crois que les valeurs a virgule float, n`accepte pas ce format la, peux tu regarder encore de pres le programme, et voir les nombres a virgule que je considere, car celui que tu as donne considere les entiers..et le plus a cote c`est pour la difference de temperature -1C ou +1C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%d\t %+.3f\n", fahrenheit,celsius);
    merci SMALTO

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%5f %5f",12.15,20.10);
    devrait aussi marcher.

  5. #5
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut je ne saisie pas ..bien..
    je en saisie pas bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%5f %5f",12.15,20.10);
    surtout la partie en gras et en grand, pouvez vous m`expliquer cela car, moi j`ai valeurs differents a chaque moment, donc je ne peux pas fixez une valeur precise...
    SMALTO...

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%5d\t %5.3f\n", fahrenheit,celsius);
    par exemple.
    Après il faut adapter l'espace donné à chaque nombre en fonction de l'affichage désiré.

  7. #7
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut cela ne marche pas.....
    avec mon programme cela ne marche pas

  8. #8
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    C'est peut être le signe "+" qui est resté dans le printf.
    Il faut l'enlever.
    Si ce n'est pas ça, quel est le problème?

  9. #9
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 36
    Par défaut le programme marche....
    merci je crois que le probleme c`est parce que j`utilisait des valeurs inferieure au nombre de charactere a affiche par example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%3d\t %+8.3f\n", fahrenheit,celsius);
    c`est ce que j`ai mis dans mon programme et sa marche , masi quand je prends des valeurs en dessous de 8 cela ne marche pas par example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("%3d\t %+7.3f\n", fahrenheit,celsius); 
    ou printf("%3d\t %+6.3f\n", fahrenheit,celsius);
    merci de votre aide, tout va bien dans le bateau maintenant...

    SAMLTO....

  10. #10
    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 smalto
    je voudrais qu`il me donne un alignement, les unite sous les unite, les dizaines sous les dizaines ainsi de suite, masi je n`arrive pas a le faire , voulez vous m`aidez...
    Il faut apprendre à manipuler les formats...

    http://dpobel.free.fr/man/html/affic...48/man/printf/

    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>
     
    #define MIN 0
    #define MAX 212
     
    int main(void)
    {
       int fahrenheit;
       double celsius;
     
       printf("Fahrenheit Celsius\n\n");
     
       for (fahrenheit = MIN; fahrenheit <= MAX; fahrenheit++)
       {
          celsius = (5.0 / 9) * (fahrenheit - 32);
          printf("%3d       %+8.3f\n", fahrenheit, celsius);
       }
     
       return 0;
    }

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Par défaut
    printf(" %3d \n %3.3f",8,3.222);

    doit donner :

    008
    003.222


    si je ne m'abuse.

  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 deck_bsd
    printf(" %3d \n %3.3f",8,3.222);

    doit donner :

    008
    003.222

    si je ne m'abuse.
    Tu t'abuses...
    Au lieu de taper du code au hasard, pourquoi tu ne vérifies pas ?

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Tu t'abuses...
    Au lieu de taper du code au hasard, pourquoi tu ne vérifies pas ?
    oui , excuse moi, je me suis rapellé que les 0 n'était pas affiché. Je sens comme une dent contre moi, aparement je ne suis pas le bienvenue. tempis...

  14. #14
    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 deck_bsd
    oui , excuse moi, je me suis rapellé que les 0 n'était pas affiché. Je sens comme une dent contre moi, aparement je ne suis pas le bienvenue. tempis...

    Non, c'est juste qu'au lieu de supposer que ta ligne fais ca, tu la compile et tu regardes le résultat.

  15. #15
    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 Skyrunner
    Non, c'est juste qu'au lieu de supposer que ta ligne fais ca, tu la compile et tu regardes le résultat.
    Ca ne permet pas de voir si c'est correct, mais ça permet de voir si c'est faux !
    C'est un bon début...

Discussions similaires

  1. Probleme format cellule affichage 000
    Par deca2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/05/2008, 13h37
  2. Probleme, affichage printf?
    Par aymeric2k dans le forum Débuter
    Réponses: 3
    Dernier message: 30/09/2007, 21h53
  3. Formater l'affichage d'un fichier
    Par devdev2003 dans le forum Linux
    Réponses: 3
    Dernier message: 28/06/2005, 17h47
  4. [CR8] Problème de Format d'affichage
    Par khabch dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 19/02/2004, 14h10
  5. [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

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