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 simple d'affichage à l'écran, aidez moi svp


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 89
    Points : 36
    Points
    36
    Par défaut problème simple d'affichage à l'écran, aidez moi svp
    Bonjour,
    Je révise mes exams et j'ai un problème (inutile au passage mais qui peut rapporter 1 point alors on va pas faire l'impasse)

    Voilà je souhaite afficher sur l'écran :
    "Entrer x : (valeur entrée par l'utilisateur) TABULATION Entrer y : (valeur entrée par l'utilisateur)"

    sur une même ligne et non pas (comme j'ai actuellement :
    "Entrer x : (valeur entrée par l'utilisateur)
    SAUT DE LIGNE
    Entrer y : (valeur entrée par l'utilisateur)"

    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
    #include<stdio.h>
     
    main(){
           char a;
           float b,c,d,e;
           printf("Entrer l'operation : ");
           scanf("%c",&a);
           printf("Entrer x : ");
           scanf("%f",&b);
           printf("Entrer y : ");
           scanf("%f",&c);
           if(a=='+'){d=b+c;}
           if(a=='-'){d=b-c;}
           if(a=='/'){d=b/c;}
           if(a=='*'){d=b*c;}
           printf("x=%f - y=%f, c=%c, r=%f",b,c,a,d);
           scanf("%f",&e);
           }

    Merci beaucoup à vous amis développeurs. Bonne soirée

  2. #2
    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 Vincent23 Voir le message
    Voilà je souhaite afficher sur l'écran :
    "Entrer x : (valeur entrée par l'utilisateur) TABULATION Entrer y : (valeur entrée par l'utilisateur)"

    sur une même ligne et non pas (comme j'ai actuellement :
    "Entrer x : (valeur entrée par l'utilisateur)
    SAUT DE LIGNE
    Entrer y : (valeur entrée par l'utilisateur)"
    Ceci
    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
     
    #include<stdio.h>
     
    int main (void)
    {
       char a;
       float b, c, d, e;
       printf ("Entrer l'operation : ");
       scanf ("%c", &a);
     
       printf ("Entrer x  et y : ");
       scanf ("%f %f", &b, &c);
       if (a == '+')
       {
          d = b + c;
       }
       if (a == '-')
       {
          d = b - c;
       }
       if (a == '/')
       {
          d = b / c;
       }
       if (a == '*')
       {
          d = b * c;
       }
       printf ("x=%f - y=%f, c=%c, r=%f\n", b, c, a, d);
     
    }
    permet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Entrer l'operation : *
    Entrer x  et y : 12 34
    x=12.000000 - y=34.000000, c=*, r=408.000000
     
    Process returned 45 (0x2D)   execution time : 10.635 s
    Press any key to continue.
    mais n'empêche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Entrer l'operation : *
    Entrer x  et y : 12
    34
    x=12.000000 - y=34.000000, c=*, r=408.000000
     
    Process returned 45 (0x2D)   execution time : 9.748 s
    Press any key to continue.
    Pour des saisies plus contrôlées, il faut des fonctions de bas niveau comme on trouve dans conio ou PDCurses.

  3. #3
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    4 fois le test pour la même variable???

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    int main (void)
    {
       int op; /* operator */
       int ret;
       double op1; /* operand 1 */
       double op2; /* operand 1 */
       double result;
     
       do
       {
          printf ("Entrer x et y : ");
          ret = scanf ("%lg %lg", &op1, &op2);
          scanf ("%*[^\n]"), getchar ();
       }
       while (ret != 2);
     
       ret = 0;
       printf ("Entrer l'operation : ");
     
       switch (op = getchar ())
       {
          case '+':
             result = op1 + op2;
             break;
          case '-':
             result = op1 - op2;
             break;
          case '/':/* test c != 0 ? */
             result = op1 / op2;
             break;
          case '*':
             result = op1 * op2;
             break;
          default :
             ret = EXIT_FAILURE;
       }
     
       if (ret == 0)
       {
          printf ("%g %c %g = %g\n", op1, op, op2, result);
       }
     
       return ret;
    }

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 395
    Points : 23 756
    Points
    23 756
    Par défaut
    Je pense que ce qu'il veut faire, c'est inviter l'utilisateur à saisir la première variable, attendre la validation, puis afficher une nouvelle invite à la suite du nombre saisi.

    Le plus simple est encore de remonter d'une ligne et d'en écraser le contenu avec l'invite initiale, le contenu de la variable et la seconde invite en un seul printf. Tu dois pouvoir le faire avec un code CSI.

  5. #5
    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 Obsidian Voir le message
    Le plus simple est encore de remonter d'une ligne<...>
    Remonter d'une ligne ? En C standard ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 89
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Je te remercie énormément Emmanuel Delahaye, si je comprends bien il n'est pas possible de réaliser la casse que je désirais faire, ce n'est pas grave mon prog tourne et c'est le plus important. Quand à l'indication d'utiliser une boucle switch c'est le sujet de mon deuxième exercice.

    Merci à tous ceux qui ont éssayé de m'aider, bonne journée.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 395
    Points : 23 756
    Points
    23 756
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Remonter d'une ligne ? En C standard ?
    Si tu considères que la console reconnaît les codes VTxxx, tu peux lui demander de remonter une ligne avec la séquence « ESC[A ». C'est pas propre, mais c'est très facile à coder dans la chaîne, c'est indépendant de la position du curseur (si on considère qu'il n'a fait que descendre d'une ligne), et c'est indépendant du langage employé.

  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 Obsidian Voir le message
    Si tu considères que la console reconnaît les codes VTxxx,
    Donc ce n'est pas portable...

  9. #9
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 395
    Points : 23 756
    Points
    23 756
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Donc ce n'est pas portable...
    - Non. Et alors ? Ce n'est pas l'objet de la question.

    - Ça l'est toujours plus que conio.h ou que des fonctions C spécifiques à la gestion de la console Windows.

    - C'était une façon simple de résoudre le problème de Vincent23, qui d'une part débute, et qui d'autre part ne portera jamais ce programme-ci.

    Et subsidiairement :

    - Sur le temps total que tu passes au développement, quel pourcentage est consacré au portage de ton code, et surtout combien de plateforme/machines différentes au maximum adaptes-tu un même programme ?

    Non pas que la portabilité ne soit pas importante (en temps que libriste sous Linux, j'en sais quelque chose), mais il faut cesser de croire que c'est systématiquement l'objectif principal de tout programmeur.

  10. #10
    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 Obsidian Voir le message
    - Non. Et alors ? Ce n'est pas l'objet de la question.

    - Ça l'est toujours plus que conio.h ou que des fonctions C spécifiques à la gestion de la console Windows.
    sauf que la console Windows ne supporte plus ansi.sys depuis XP...
    - C'était une façon simple de résoudre le problème de Vincent23, qui d'une part débute, et qui d'autre part ne portera jamais ce programme-ci.
    Qui te dis que sa console supporte les commandes VT100 ? Qui te dis qu'il ne fait pas du développement multi-plateforme ? Il faut cesser de prendre les débutants pour des ânes...

    Sur un forum 'langage' les solutions non portables doivent être évitées. Personne ne te demande de te justifier. Tu as fais une erreur et je l'ai relevée, c'est tout. Ta solution aurait été acceptable sur un forum Linux.

    Sinon, on peut parler de gestion de l'écran par PDCurses qui et multi-plateforme.

    - Sur le temps total que tu passes au développement, quel pourcentage est consacré au portage de ton code, et surtout combien de plateforme/machines différentes au maximum adaptes-tu un même programme ?
    Quand je développais pour l'industrie (code embarqué sur 68k et Power PC 32-bit little endian), je développais et mettait au point sur PC avec Borland C++ (x86 mode réel, 16-bit, big endian). Comme tu peux le voir, ces plateformes n'ont rien à voir et pourtant, le C développé était portable et je n'ai jamais eu de problèmes avec ça. Ecrire du code portable, c'est finalement plus simple (moins d'instructions, rien de bizarre, que du 'straight'). C'est un état d'esprit qui génère du code plus solide. Rien en plus, au contraire.
    Non pas que la portabilité ne soit pas importante (en temps que libriste sous Linux, j'en sais quelque chose), mais il faut cesser de croire que c'est systématiquement l'objectif principal de tout programmeur.
    C'est important et ça simplifie et durcit le code.

    Dans un projet industriel de 1Mlignes comme ceux que j'ai géré pendant des années, il est hors de question d'écrire du code non portable. Les parties non portables existent, bien sûr, mais elles sont concentrées dans quelques fonctions bien précises et isolées du reste du code. L'abstraction sert à ça.

  11. #11
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Obsidian
    - Non. Et alors ? Ce n'est pas l'objet de la question.

    ...
    Si, au contraire. Pour moi, une bonne réponse aurait été de dire à Vincent23 que le C ne connaît pas de console (parce qu'une console, ca n'existe pas dans tous les systèmes, ce n'est pas portable), un programme écrit en langage C se contente d'écrire sur la sortie standard (qui sous Windows et Linux est par défaut la console ...), via les fonctions d'écriture comme printf par exemple. On ne peut donc pas contrôler la console en langage C (aller à la position (x, y), effacer la console, etc.). Il peut y avoir par contre des bibliothèques, éventuellement multiplateformes, qui permettent de le faire. PDCurses (multiplateforme) en est un exemple.

    D'autre part, dans l'avenir, préviens toujours la personne que tu aides quand tu donnes une solution non portable, comme celle que tu as donné. Cela donne plus de qualité à ta réponse .

Discussions similaires

  1. problème réseaux, Aidez moi svp
    Par krosofttt dans le forum Développement
    Réponses: 1
    Dernier message: 01/10/2010, 13h48
  2. Problème simple d'affichage
    Par AkqiraDev dans le forum C#
    Réponses: 3
    Dernier message: 24/08/2010, 21h20
  3. Réponses: 5
    Dernier message: 10/03/2007, 21h45

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