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 :

Faire une calculatrice type Windows en C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Points : 0
    Points
    0
    Par défaut Faire une calculatrice type Windows en C
    Bonjour,
    Je me permets de vous contacter car je travaille sur un "projet école" qui est : faire le programme d'une calculatrice semblable à la calculatrice disponible dans les accessoires de Windows.
    Pour cela je travaille sous Labwindows CVI.
    Voici ma trame de départ, mais ensuite je bloque pour savoir coder la partie des opérations :

    Je vous remercie d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Matrd65 Voir le message
    mais ensuite je bloque pour savoir coder la partie des opérations :
    Salut

    Pas super claire ta question. Parce que, pour coder l'addition, je ne vois pas vraiment de difficulté
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int r, a, b;
    r=a+b;
    Idem pour les autres opérations...

    Là où ça peut se compliquer, c'est avec les priorités (2+3*4 => d'abord calculer 3*4). Il te faut affecter un coefficient de priorité aux opérateurs. Ensuite, comme tu détectes chaque bouton appuyé, une fois que tu as détecté '2' puis '+' puis '3' si le bouton suivant a une priorité égale ('+' ou '-') ou inférieure ('=') tu calcules alors le résultat 5 que tu affiches ; s'il a une priorité supérieure ('*' ou '/') tu pushes le résultat 5 dans une pile et tu attends la suite ('*' puis '4') et idem si le bouton suivant a une priorité égale ('*' ou '/') ou inférieure ('+' ou '-' ou "=") alors tu popes la pile ('5') que tu calcules avec "*4=20"...

    Et un principe analogue avec les parenthèses. Sauf que chaque parenthèse ouverte définira un nouvel espace de calcul dont le résultat sera pushé lorsque la parenthèse fermante associée est détectée...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Là où ça peut se compliquer, c'est avec les priorités (2+3*4 => d'abord calculer 3*4). Il te faut affecter un coefficient de priorité aux opérateurs. Ensuite, comme tu détectes chaque bouton appuyé, une fois que tu as détecté '2' puis '+' puis '3' si le bouton suivant a une priorité égale ('+' ou '-') ou inférieure ('=') tu calcules alors le résultat 5 que tu affiches ; s'il a une priorité supérieure ('*' ou '/') tu pushes le résultat 5 dans une pile et tu attends la suite ('*' puis '4') et idem si le bouton suivant a une priorité égale ('*' ou '/') ou inférieure ('+' ou '-' ou "=") alors tu popes la pile ('5') que tu calcules avec "*4=20"...

    Et un principe analogue avec les parenthèses. Sauf que chaque parenthèse ouverte définira un nouvel espace de calcul dont le résultat sera pushé lorsque la parenthèse fermante associée est détectée...
    Et en algorithme cela donne quoi ??

    Merci d'avance.

  4. #4
    Malikemal
    Invité(e)
    Par défaut
    Hum hum, et en cherchant un peu tout seul ça donne quoi ? On est pas là pour faire ton travail à ta place surtout de l'algo qui est très important en dev ...

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Malikemal Voir le message
    Hum hum, et en cherchant un peu tout seul ça donne quoi ? On est pas là pour faire ton travail à ta place surtout de l'algo qui est très important en dev ...
    Merci beaucoup, mais si je suis ici, c'est pour avoir de l'aide car j'ai des bases très rudimentaire en C donc voilà.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut


    Sur ce forum, C, avec la fonction Recherche, tu trouveras ce que tu souhaites...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Matrd65 Voir le message
    Merci beaucoup, mais si je suis ici, c'est pour avoir de l'aide car j'ai des bases très rudimentaire en C donc voilà.
    Déjà "aider" ne veut pas dire "faire le boulot à ta place". De plus, le niveau de tes connaissances en C n'influe absolument pas sur la conception d'un algorithme qui est, rappelons-le, totalement indépendant du langage. Et enfin ben il faut être clair: si on t'a filé ce projet, c'est qu'on estimait que tu as les connaissances suffisantes pour le réaliser. Ou bien que tu as les capacités pour travailler et trouver tout seul ce qui te manque...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Merci à vous tous.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Salut

    Il te faut affecter un coefficient de priorité aux opérateurs.
    C'est quoi un coefficient de priorité ?

    Citation Envoyé par Sve@r Voir le message

    tu calcules alors le résultat 5 que tu affiches ; s'il a une priorité supérieure ('*' ou '/') tu pushes le résultat 5 dans une pile et
    Cela veut dire quoi : tu pushes ??

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Citation Envoyé par Matrd65 Voir le message
    Cela veut dire quoi : tu pushes ??
    Ca veut dire : " tu empiles ".

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Ca veut dire : " tu empiles ".
    Et "tu emplies" cela correspond à quoi ?

    Je m'excuses de ne pas arriver à vous comprendre.

  12. #12
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 364
    Points : 5 378
    Points
    5 378
    Par défaut
    Citation Envoyé par Matrd65 Voir le message
    Et "tu emplies" cela correspond à quoi ?

    Je m'excuses de ne pas arriver à vous comprendre.
    Tu peux nous dire quelle formation tu as, pour pouvoir estimer ton niveau en programmation ?

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Matrd65 Voir le message
    C'est quoi un coefficient de priorité ?
    C'est une valeur numérique affectée à un objet qui te permet ensuite de détecter qu'un objet X est plus ou moins important qu'un objet Y


    Citation Envoyé par Matrd65 Voir le message
    Et "tu emplies" cela correspond à quoi ?
    Hum... beaucoup de notions élémentaires à apprendre !!!

    Cela fait référence à un objet "pile" (un simple tableau en fait) dans lequel tu peux pusher (mettre un élément en fin de tableau) ou poper (récupérer le dernier élément du tableau ce qui le fait disparaitre). La pile est tout indiquée pour analyser une expression mathématique
    Imaginons l'opération 2+3*4-1
    Tu lis "2" que tu empiles. Ta pile contient 2
    Tu lis "+" que tu empiles. Ta pile contient 2 +
    Tu lis "3" que tu empiles. Ta pile contient 2 + 3
    Tu lis "*". Comme "*" a une priorité plus élevée que "+", tu l'empiles aussi. Ta pile contient maintenant 2 + 3 *
    Tu lis "4" que tu empiles. Ta pile contient 2 + 3 * 4
    Tu lis "-". Comme "-" a une priorité moins élevée que le dernier opérateur lu "*", alors tu commences par dépiler les 3 derniers éléments 3 * 4. Ta pile contient alors 2 +. Tu fait l'opération "3*4=12" que tu empiles. Ta pile contient alors 2 + 12. Et tu rajoutes le "-" ce qui donne 2 + 12 -
    Tu lis "1" que tu empiles => 2 + 12 - 1
    Tu lis enfin "=". Te suffit de relire toute ta pile en exécutant les opérations comme elles viennent => 2 + 12 = 14; 14 - 1 = 13


    Certains langages assez évolués t'offrent un objet "pile" tout fait (Python par exemple), d'autres, comme le C, t'obligent à le programmer toi-même...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Faire une calculatrice basique
    Par bensof1 dans le forum Débuter
    Réponses: 5
    Dernier message: 30/12/2008, 18h56
  2. [WPF] Comment faire une fenetre type explorateur windows (coté listbox)
    Par Zucher dans le forum Windows Presentation Foundation
    Réponses: 11
    Dernier message: 28/01/2008, 16h16
  3. Réponses: 3
    Dernier message: 10/11/2007, 18h09
  4. Réponses: 1
    Dernier message: 09/11/2006, 12h39
  5. faire une 2eme fenetre windows
    Par christdu13 dans le forum Windows
    Réponses: 5
    Dernier message: 19/05/2006, 14h18

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