Répondre à la discussion
Affichage des résultats 1 à 29 sur 29

probleme avec mon fichier .exe



  1. #1
    starsign

    probleme avec mon fichier .exe


    ------

    salut,

    voila je suis entrain de développer(si on peut appeller ça comme sa)une petite calculette en c avec codeblocks, qui s'ouvre sur la fenetre dos(console)de windows(xp).Le probleme c'est que quand je vais dans le dossier de mon projet, je vais dans bin, debug , j'ouvre le .exe, je choisi l'option, rendre mes 2 nombres et au moment du résultat la fênetre se ferme.Pourtant lorsque je le lance a partir de l'IDE tout fonctionne.
    est-ce normal?

    merci

    ps:désolé si j'ai fais des fautes

    -----

  2. Publicité
  3. #2
    Jack
    Modérateur

    Re : probleme avec mon fichier .exe

    oui, c'est normal puisque ton programme est terminé. Mets un truc genre getch() avant le return de la fonction main de manière à attendre l'appui sur une touche avant de terminer.

    A+

  4. #3
    starsign

    Re : probleme avec mon fichier .exe

    ok je te remercie, je vais voir si ca marche.

  5. #4
    starsign

    Re : probleme avec mon fichier .exe

    c'est bon je viens de tester tout est ok, merci.

  6. A voir en vidéo sur Futura
  7. #5
    starsign

    Re : probleme avec mon fichier .exe

    salut,

    comme je l'ai dis plus haut, je développe un calculette tres basique.
    mais la j'ai un probleme: voici mon code source:

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include<math.h>
    int main()
    {
        int TypeDeCalcul, ChoixDuNombreDeChiffre;//valeur des variables
    
    
        printf("=====SUPER MEGA FAMICONSOLE 10======\n\n");
        printf("==CHOIX DU TYPE DE CALCUL==\n\n\n");//tous les choix possibles
        printf("==1- ADDITION==\n\n");
        printf("==2- SOUSTRACTION==\n\n");
        printf("==3- MULTIPLICATION==\n\n");
        printf("==4- DIVISION==\n\n");
        printf("Quel est votre choix pour le type de calcul?\n\n");
         scanf("%d", &TypeDeCalcul);//fonction qui permet de taper votre choix
        printf("\n\n\n");
    
        switch(TypeDeCalcul)//le switch, début du menu
    {
        case 1:
               printf("Vous avez choisi les additions\n\n");
        break;
        case 2:
               printf("Vous avez choisi les soustractions\n\n");
        break;
        case 3:
               printf("Vous avez choisi les multiplications\n\n");
        break;
        case 4:
               printf("Vous avez choisi les divisions\n\n");
        break;
        default:
                printf("desole mais l'option choisi n'est pas operationnelle\n\n");
        break;
    }
    
    
    
    
    
        printf("=====CHOIX DU NOMBRE DE CHIFFRE=====\n\n");//choix du nombre de chiffre
        printf("==1- 2 NOMBRES==\n\n");
        printf("==2- 3 NOMBRES==\n\n");
        printf("==3- 4 NOMBRES==\n\n");
        printf("==4- 5 NOMBRES==\n\n");
        printf("Quel est votre choix pour le nombre de chiffre?\n\n");
         scanf("%d", &ChoixDuNombreDeChiffre);
         printf("\n\n\n");
    
         int Nombre1, Nombre2, Nombre3, Nombre4, Nombre5, Resultat;
         Nombre1 = 0, Nombre2 = 0, Nombre3 = 0, Nombre4 = 0, Nombre5 = 0, Resultat = 0;
    
         switch(ChoixDuNombreDeChiffre)
    {
         case 1:
                printf("Vous avez choisi 2 Nombres\n\n");
                printf("Veuillez choisir le nombre 1:\n\n");
                 scanf("%d", &Nombre1);
                 printf("\n\n");
                printf("Veuillez choisir le nombre 2:\n\n");
                 scanf("%d", &Nombre2);
                 printf("\n\n");
                Resultat = Nombre1 + Nombre2;
                printf("%d + %d = %d", Nombre1, Nombre2, Resultat);
                printf("\n\n");
                printf("le resultat du calcul %d + %d = %d est %d\n\n", Nombre1, Nombre2, Resultat, Resultat);
                
    
          break;
         case 2:
                printf("Vous avez choisi 3 nombres\n\n");
    
         break;
         case 3:
                printf("Vous avez choisi 4 nombres\n\n");
         break;
         case 4:
                printf("Vous avez choisi 5 nombres\n\n");
         break;
         default:
                 printf("Desole mais l'option choisi n'est pas operationnelle\n\n");
         break;
    }
    
    
    
    
    
    
        getch();
        return 0;
    }
    donc le probleme c'est que je ne sais pas comment faire pour pouvoir faire pour que je puisse coder le fais de pouvoir faire ujne addition, soustracion ou division ou multiplication apres avoir choisi le type de calcul et le nombre de chiffire.je sais que je ne suis pas tres clair et j'en suis fort désolé.
    si quelqu'un peut me coder la soustraction avec 2 nombres je vous remercie, je finirai le code moi même.

    merci
    Dernière modification par JPL ; 09/06/2010 à 20h40. Motif: Ajout de la balise Code pour la lisibilité

  8. #6
    starsign

    Re : probleme avec mon fichier .exe

    quelqu'un peut m'aider?

    merci d'avance

  9. Publicité
  10. #7
    whoami

    Re : probleme avec mon fichier .exe

    Bonjour,

    Comme tu le dis, ce n'est pas super clair.

    Mais pour commencer, au lieu d'une longue fonction comme ta main, crée des fonctions spécialisées, comme :
    - menus
    - lecture données
    ...

    de plus, puique tes x nombres seront tous du même type, il est utile d'utiliser un tableau ...

    Et dernier conseil : puisque tu as de la peine à être clair, c'est que ce tu veux faire n'est pas clair dans ta tête, alors, avant d'écrire la moindre ligne de code, réfléchis bien à ce que tu veux faire, comment, de quoi tu as besoin ...

  11. #8
    Jack
    Modérateur

    Re : probleme avec mon fichier .exe

    Citation Envoyé par whoami Voir le message
    Comme tu le dis, ce n'est pas super clair.
    +1

    Citation Envoyé par starsign Voir le message
    donc le probleme c'est que je ne sais pas comment faire pour pouvoir faire pour que je puisse coder le fais de pouvoir faire ujne addition ...


    Essaie aussi de nous faciliter la tâche en indentant le code et en le plaçant entre les balises "code".

    A+

  12. #9
    starsign

    Re : probleme avec mon fichier .exe

    Citation Envoyé par whoami Voir le message
    Bonjour,

    Comme tu le dis, ce n'est pas super clair.

    Mais pour commencer, au lieu d'une longue fonction comme ta main, crée des fonctions spécialisées, comme :
    - menus
    - lecture données
    ...

    de plus, puique tes x nombres seront tous du même type, il est utile d'utiliser un tableau ...

    Et dernier conseil : puisque tu as de la peine à être clair, c'est que ce tu veux faire n'est pas clair dans ta tête, alors, avant d'écrire la moindre ligne de code, réfléchis bien à ce que tu veux faire, comment, de quoi tu as besoin ...
    je sais ce que je veux faire avec mon code, le probleme c'est que je ne sais pas comment l'exprimer.en faite, j'aimerai que l'on me code le choix de faire une soustraction à 2 nombres, juste ça, sachant que je suis en train de revoir les bases de la programmation en c, car j'ai oublié en temps.
    merci

  13. #10
    bzh_nicolas

    Re : probleme avec mon fichier .exe

    Je vois quelque chose comme ça :

    Code:
    int lecture_type_operation()
    /*lit les type d'opération à effectuer*/
    {
      ta méthode de lecture
      retourne TypeDeCalcul;
    }
    
    int lecture_chiffre(int* tab)
    /*lit le nombre de chiffres à traiter et remplit le tableau*/
    {
      lecture du nombre de chiffre
      allocation dynamique du tableau tab
      boucle de  lecture des chiffres pour remplir tab
      retourne le nombre de chiffre
    }
    
    int calcul (int nb, int* tab, int op)
    /*effectue le calcul*/
    {
      int res = 0;
      selon op
      cas addition :
        pour indice = 0 à nb-1
          res = res + tab[indice]
        fin pour    
      cas soustraction :
        pour indice = 0 à nb-1
           res = res - tab[indice]
        fin pour
      [...]
      fin selon
      retourne res
    }
    
    void main()
    {
      int* tableau_chiffre; /*tableau qui contient les chiffres à traiter*/
      int nb_chiffre;  /*nombre de chiffres à traiter*/
      int type_op;   /*type d'opération à effectuer*/
      int resultat;
      type_op = lecture_type_operation();
      nb_chiffre = lecture_chiffre(tableau);
      resultat = calcul(nb_chiffre, tableau, type_op);
      affiche resultat;
    }
    Ton algorithme tel que tu l'as commencé, est mal parti, comme on te l'a dit, si tu ne peut pas exprimer clairement ton idée, c'est qu'elle n'est pas claire dans ton esprit. Dans ce cas, le mieux est de poser l'algo sur papier comme je viens de le faire.
    PS1 : Ton algo fonctionne mais il va être très long et complexe pour une opération somme toute simple car tu va avoir quelque chose de la forme :
    Code:
    selon type operation
      cas addition :
        selon nombre de chiffre
         cas 2 :
            lecture
            calcul
         cas 3 :
            lecture 
            calcul
         ...
         fin selon
      cas soustraction
         selon nombre de chiffre
         cas 2 :
            lecture
            calcul
         cas 3 :
            lecture 
            calcul
         ...
         fin selon
       ...
    fin selon
    Et tu vas arriver au final à un programme qui va dépasser les 1000 lignes à vu de nez, peut-être plus (je trouve déjà plus de 190 lignes rien que pour les calculs à deux chiffres si tu fais la lecture des chiffres à chaque fois).
    C'est pour ça que j'ai dissocié la lecture des données et les calculs : programme plus court et plus facile à relire en cas de bug, faute de frappe, ...
    PS2 : Oui, je sais, ce mélange d'algorithmique et de C est intéressant
    PS3 : Personnellement, je serais plutôt parti sur la lecture d'une chaine de caractère contenant l'opération
    lecture de la chaine
    déchiffrement de la chaine
    conversion en chiffre
    calcul
    C'est plus complexe à traiter (les chaines de caractères en C...) mais beaucoup plus souple pour l'utilisateur.

  14. #11
    starsign

    Re : probleme avec mon fichier .exe

    [QUOTE=bzh_nicolas;3039627]Je vois quelque chose comme ça :

    Code:
    int lecture_type_operation()
    /*lit les type d'opération à effectuer*/
    {
      ta méthode de lecture
      retourne TypeDeCalcul;
    }
    
    int lecture_chiffre(int* tab)
    /*lit le nombre de chiffres à traiter et remplit le tableau*/
    {
      lecture du nombre de chiffre
      allocation dynamique du tableau tab
      boucle de  lecture des chiffres pour remplir tab
      retourne le nombre de chiffre
    }
    
    int calcul (int nb, int* tab, int op)
    /*effectue le calcul*/
    {
      int res = 0;
      selon op
      cas addition :
        pour indice = 0 à nb-1
          res = res + tab[indice]
        fin pour    
      cas soustraction :
        pour indice = 0 à nb-1
           res = res - tab[indice]
        fin pour
      [...]
      fin selon
      retourne res
    }
    
    void main()
    {
      int* tableau_chiffre; /*tableau qui contient les chiffres à traiter*/
      int nb_chiffre;  /*nombre de chiffres à traiter*/
      int type_op;   /*type d'opération à effectuer*/
      int resultat;
      type_op = lecture_type_operation();
      nb_chiffre = lecture_chiffre(tableau);
      resultat = calcul(nb_chiffre, tableau, type_op);
      affiche resultat;
    }
    merci, mais le probleme c'est que je viens jsute d'apprendre le début des bases que je n'est pas vu depuis longtemps(enfin 2 ou 3 ans), et le probleme c'est que je n'est toujours pas vu les boucles, je ne pense pas pouvoir refaire ce que tu as mis.

  15. #12
    starsign

    Re : probleme avec mon fichier .exe

    aurais-tu plus simple?

  16. Publicité
  17. #13
    starsign

    Re : probleme avec mon fichier .exe

    sinon je retire le choix du nombre de chiffre, non?

  18. #14
    bzh_nicolas

    Re : probleme avec mon fichier .exe

    Citation Envoyé par starsign Voir le message
    sinon je retire le choix du nombre de chiffre, non?
    C'est une solution mais enlevé une fonctionnalité car elle pose problème à coder n'est pas la meilleure solution pour progresser.
    Sinon, comme je te l'ai dit, tu peux continuer avec ton algo mais tu vas vite te retrouver avec des centaines (milliers) de lignes à gérer et tu vas vite en avoir ras le bol de taper/copier-coller puis modifier des dizaines et dizaines de lignes de code. Sans parler du risque d'erreurs de frappe ou d'oubli de modification sur tant de lignes quasi-identiques.

    Ne tarde pas trop à apprendre les boucles, c'est indispensable en programmation, au même titre que les structures conditionnelles (if, switch,...). Si tu regardes les cours de programmation sur le net (sitduzero par exemple) tu te rends compte que les programmes proposés en exercice avant l'apprentissage des boucles sont très simple (bien plus que la calculatrice que tu cherches à programmer en tout cas) : ils se contentent la plupart du temps de lire une info et d'afficher une ligne en fonction de cette info.
    La calculatrice que tu cherches à faire est un programme qui pose plus de problèmes (comme tu t'en est rendu compte) à un débutant.

    Une solution peut-être de commencer par un programme basique :
    choix de l'opération puis appliquer cette opération sur 2 chiffres en essayant d'organiser ton algo pour avoir des méthodes séparées comme je te l'ai mis, puis au fur et à mesure de ton apprentissage du langage (boucles, ...) d'ajouter la fonctionnalité de choix du nombre de chiffres. Tu comprendras par toi même l'intérêt et l'importance de la séparation en plusieurs méthodes/fonctions au fur et à mesure que ton programme va se complexifier.
    La structuration/organisation du code est aussi importante que la qualité de ton algorithme.

  19. #15
    starsign

    Re : probleme avec mon fichier .exe

    ok, ben je vais laisser cela comme ça pis lorsque j'aurai appris les boucles je le finirai.par contre j'ai une question.je n'est pas compris pour le else if, quand je tape l'exemple, mais en le modifiant mais sa ne marche pas c'est toujours le if qui prend le dessus même quand la variable n'est pas bonne

  20. #16
    bzh_nicolas

    Re : probleme avec mon fichier .exe

    Citation Envoyé par starsign Voir le message
    ok, ben je vais laisser cela comme ça pis lorsque j'aurai appris les boucles je le finirai.par contre j'ai une question.je n'est pas compris pour le else if, quand je tape l'exemple, mais en le modifiant mais sa ne marche pas c'est toujours le if qui prend le dessus même quand la variable n'est pas bonne
    Tu peux donner le code original et le code modifié ?

  21. #17
    starsign

    Re : probleme avec mon fichier .exe

    je ne l'ai plus sur mon pc, mais le code venait de lesiteduzero.
    peut-on mettre un scanf pour pouvoir demander l'age par exemple de quelqu'un et lui dire s'il est majeur ou non grâce à le if et le else if ou le if et le else?
    je ferais ma calculette à partir de la deuxième partie du siteduzero car il parle des tableaux, et je devrais bientôt avoir un livre sur le c.
    Dernière modification par starsign ; 09/06/2010 à 16h22.

  22. #18
    whoami

    Re : probleme avec mon fichier .exe

    Bonjour,

    Manifestement, tu as des problèmes de compréhension.

    Donc, que ne comprends-tu pas avec les if else if ... ?
    C'est pourtant assez parlant.

  23. Publicité
  24. #19
    starsign

    Re : probleme avec mon fichier .exe

    ben ce que je comprend pas c'est à quoi sa sert?
    Dernière modification par starsign ; 09/06/2010 à 18h08.

  25. #20
    bzh_nicolas

    Re : probleme avec mon fichier .exe

    Code:
    if (condition)
    {
      /*si condition vérifié*/
      on fait ça
    }
    else
    {
      /*sinon*/
      on fait ci
    }
    Ca reprend le même principe que le switch
    Code:
    switch condition
    case 1:
      action a
    case 2:
     action b
    etc1
    default :
      action n
    est équivalent à

    Code:
    if (condition =1)
    {
      action a
    }else if (condition=2){
      action b
    }else if.....
    etc1
    }else{
      action n
    }
    La ou il devient intéressant, c'est pour les conditions complexes du genre :
    if ((a==d)||((b>1)&&(c!=0))) then
    par exemple (ou pire) qui s'avère très difficile à traduire avec le switch.
    C'est une des structures et des notions les plus simple en programmation. Je crois que tu devrais reprendre le site du zéro et refaire les exemples simples avant d'aller plus loin car le if... est beaucoup plus utilisé et utile que le switch. Tous les switch peuvent être traduit en if then else if else, l'inverse est faux du moins de manière simple et rapide.

  26. #21
    starsign

    Re : probleme avec mon fichier .exe

    oui mais lorsque je veux faire un menu avec un if et un else ou un if else, comment je fais?Parce je sais que c'est simple cette fonction mais je ne comprend pas comment elle marche.Pourrais-tu me coder la partie du choix du menu de mon code en remplacant le switch par un if...else ou un if else, pour que je puisse voir comment se serai.

    merci

  27. #22
    whoami

    Re : probleme avec mon fichier .exe

    Bonjour,

    Je crois que tu as besoin de tout reprendre à zéro, en faisant, et en essayant de comprendre tous les exercices basiques.

    Même pour un débutant, je ne vois pas ce qui te bloque là-dedans.

    Code:
    SI une condition est remplie
        On fait le traitement qui correspond
    SINON
        On passe à la suite des traitements...

  28. #23
    starsign

    Re : probleme avec mon fichier .exe

    ben ce qui me bloque c'est que je ne sais pas si c'est une condition que l'utilisateur peut remplir, par exemple une question lui est poser, si il répond juste cela rempli la condition, ou si c'est la variable que le programmeur crée qui remplie la condition ou non

  29. #24
    Jack
    Modérateur

    Re : probleme avec mon fichier .exe

    tout passe par les variables: la réponse de l'utilisateur est mémorisée dans une variable et c'est cette variable qui est testée.

    A+

  30. Publicité
  31. #25
    bzh_nicolas

    Re : probleme avec mon fichier .exe

    C'est la même chose qu'un switch sauf que la syntaxe change. Ici tu dois marquer le test à chaque fois.
    Voila se que donnerait ta sélection du type d'opération (le reste du code ne change pas).
    Code:
    /*à la place du premier switch*/
        if (TypeDeCalcul == 1)
        //ici tu testes ta variable à la valeur 1 (addition) 
        {
            printf("Vous avez choisi les additions\n\n");
        }
        else if (TypeDeCalcul == 2)
        //valeur 2 soustraction
        {
            printf("Vous avez choisi les soustractions\n\n");
        }
        else if (TypedeCalcul == 3)
        //multiplication
        {
            printf("Vous avez choisi les multiplications\n\n");
        }
        else if (TypeDeCalcul == 4)
        //division
        {
            printf("Vous avez choisi les divisions\n\n");
        }
        else
        //tous les autres cas
        //Dans le cas de ton programme des fautes de frappes, etc...
        {
            printf("desole mais l'option choisi n'est pas operationnelle\n\n");
        }
    L'intérêt ne te saute peut-être pas aux yeux mais quand le programme devient complexe tu ne peux pas toujours utiliser facilement le switch. Autre cas ou le if est plus utile que le switch pour ta calculatrice : pense à la division par 0 (impossible). Tu devras vérifier, pour les chiffres tapés pour la division, que tu n'as pas de dénominateurs égale à 0 sinon ton programme plantera.
    Si le nombre est égale à 0, tu devras redemander un chiffre à l'utilisateur tant qu'il ne t'a pas donner un chiffre différend de 0 (bon dans la pratique tu utiliseras plutôt une boucle mais l'idée est là ).

    Conseil 1 : Comme on te l'a dit, reprends les bases avant de continuer ton apprentissage du C. Sinon, tu vas vite te retrouver dépassé et tu risques d'être dégouté. Fais des petits programmes simples qui vont te familiariser avec le if déjà.
    Un exemple (j'adore faire le prof ) : écris un programme qui va demande l'age d'une personne, si elle à moins de 18 ans le programme écrit mineur, si elle entre 18 et 60 ans il écrit actif, si elle a plus de 60 ans il écrit retraité.
    Le cours de C du siteduzero est bien mais il ne propose les exercices qu'en fin de chapitres, c'est un peu léger. Tu peux te créer un petit exercice du style de celui que je viens de te donner pour chaque nouvelle notion (if, if-else, if-else if-else, chacun des types de boucles, etc...). Tu comprendras beaucoup plus vite qu'en lisant/recopiant les exemples de code du siteduzero.

    Conseil 2 : Essaye de trouver un cours ou un bouquin d'algorithmique. Je m'explique : connaitre un langage c'est bien mais les cours de langage informatique sont tous identiques dans la forme. Ils t'apprennent la structure du langage étudié, te donne des exemples. Mais ça NE suffit PAS. Connaitre la syntaxe d'un langage n'est pas suffisant pour programmer, il faut aussi comprendre la logique de la programmation. Voici un premier cours (un peu austère malheureusement) tu peux aussi aller voir si tu ne trouves pas des cours d'algo niveau DUT ou BTS info, ils sont complets et, en général, proposent de nombreux exercices (les exercices, c'est toujours plus pratique et efficace que de lire un bouquin pendant des heures et des heures).

  32. #26
    whoami

    Re : probleme avec mon fichier .exe

    Bonjour,

    Pour poursuivre l'exemple de bzh_nicolas sur l'âge :

    Et s'il entre plus de 130, probable faute de frappe, et s'il entre 969, c'est Mathusalem.

  33. #27
    starsign

    Re : probleme avec mon fichier .exe

    bonjour,

    je m'excuse de faire remonter ce sujet mais j'ai une question, comment faire pour que toute les données que je tape dans mon programme(executable en mode dos(console))disparaissent, car j'aimerai que lorsque je tape par exemple le chiffre 1 dans la calculette que j'ai programmé, tout ce qui se trouve au dessus de ce 1 disparaisse.
    comment faire.

    merci

  34. #28
    bzh_nicolas

    Re : probleme avec mon fichier .exe

    Il n'y a pas de méthode toute faite, tu vas devoir remplir l'écran de caractères. tu peux remplir de sauts de lignes. A toi de tester pour trouver le bon nombre.

  35. #29
    starsign

    Re : probleme avec mon fichier .exe

    ok je te remercie.

    ps:C'est bon j'ai réussi, je suis en train de refaire ma calculette avec le if et le else if.

Discussions similaires

  1. Probléme depuis cette après-midi avec msa.exe et d.exe
    Par Phantomeren dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 4
    Dernier message: 01/01/2010, 20h35
  2. problème avec le fichier csrss.exe
    Par alex44590 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 9
    Dernier message: 07/11/2009, 12h54
  3. Problème avec le fichier rundll32.exe
    Par Tybert dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 25/05/2009, 16h04
  4. problème avec le fichier csrss.exe sous winsock
    Par banko dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 7
    Dernier message: 16/09/2006, 22h57
  5. fichier exe
    Par alex_@ dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 13/02/2006, 10h06
Découvrez nos comparatifs produits sur l'informatique et les technologies.