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

Algorithme qui ne veut pas fonctionner sur dev++



  1. #1
    diabetique

    Algorithme qui ne veut pas fonctionner sur dev++


    ------

    Bonjour tout le monde j'ai écrit l'algorithme suivant mais il n'est pas exécutable sur Dev++ , en effet lors de l'exécussion je ne peux qu'afficher les nombres a et b et puis il se ferme sans éxécuter la boucle si (merci beaucoup pour toute réponse )


    Code:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
      float c,a,b;
       char x;
       printf("entrer a ");
       scanf("%f",&a );
       printf("entrer b ");
       scanf("%f",&b );
       printf("donner l'opération à faire x");
       scanf( "%c",&x);
       if(x=='+'){c=a+b;}
       else if(x=='-'){c=a-b;}
       else if (x=='/'){if(b !=0){c=a/b;}else {printf("division impossible");}}
       else {printf("ce n'est pas une calculatrice ");}
       printf("%c",c);
     
      
       
        return EXIT_SUCCESS;

    -----
    Dernière modification par JPL ; 02/10/2011 à 13h36. Motif: Ajout de la balise Code pour la lisibilité

  2. Publicité
  3. #2
    photon57

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    Hello,

    pour poster du code il est plus simple d'utiliser les balises [ code] [/code], ce sera un peu plus lisible, i lfaudra aussi améliorer l'indentation.

    À première vue, je vois deux problèmes :

    1. scanf avec un caractère ... moyen, il vaut mieux utiliser scanf avec un char* quand tu accèdes à la console.
    2. le printf final avec %c n'est pas aproprié pour afficher un float.

    Remarques :

    * il ne s'agit pas vraiment d'un algorithme, mais d'une implémentation en (c+c++)/2
    * il n'y a pas de boucle ... un boucle c'est un for, un while, ... un si est une conditionnelle

  4. #3
    diabetique

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    que pensez vous de celui là ?
    Code:
        float c,a,b,s;
    char x;
    printf("entrer a ");
    scanf("%f",&a );
    printf("entrer b ");
    scanf("%f",&b );
    printf("donner l'opération à faire x");
    scanf( "%c*",&x);
    if(x=='+'){s=a+b;}
    else if(x=='-'){s=a-b;}
    else if (x=='/'){if(b !=0){s=a/b;}else {printf("division impossible");}}
    else {printf("ce n'est pas une calculatrice ");}
    printf("%f",s);
    (toujours si ne s'exécute pas ainsi que l'affichage de s ???!!!)


    merci si vous pouvez m'aider encore

  5. #4
    photon57

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    Re-,

    Au lieu de ton char x, utilise un char[10] x, remplace le scanf("%c",&x) par un scanf("%1s",x) et les x== par des x[0]==

    Il peut y avoir un problème si l'utilisateur ne tape pas directement un des caractères attendus.

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

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    Salut mon problème est qu'on est pas trop avancé en langage c c'est pour cette raison je ne dois utiliser que des choses de base comme printf ,scanf en brèf le genre dont j'ai écrit le programme , mon problème est de faire fonctionner "si " ???!!!! merci si vous poivez encore m'aider

  8. #6
    photon57

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    Ce n'est pas le si qui ne fonctionne pas, le problème est comment tu utilises scanf.
    Je suppose que dans ton cours vous avez appris les chaînes de caractères ? Alors au lieu de demander d'entrer un unique caractère essaye plutôt de demander une chaîne de caractères ...

    Mon post précédent dit la même chose. Pour info, tu utilises des extensions c++ ...

  9. Publicité
  10. #7
    Jack
    Modérateur

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    Il faut faire "sauter" le caractère de retour ligne que tu as entré en validant le nombre b.
    Au lieu d'un scanf pour lire le signe, mets-en 2 à la suite.

    Je ne sais pas si tu as vu l'instruction switch ...case, mais son utilisation me semble plus judicieuse que ta cascade de if ...else

    A+

  11. #8
    invite765732342432
    Invité

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    Citation Envoyé par diabetique Voir le message
    merci si vous poivez encore m'aider
    Par acquis de conscience, peux-tu simplement rajouter " \n " à la fin de chacun de tes printf ?
    ex: printf("%f",s); => printf("%f\n",s);

  12. #9
    photon57

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    Citation Envoyé par Jack Voir le message
    Il faut faire "sauter" le caractère de retour ligne que tu as entré en validant le nombre b.
    Au lieu d'un scanf pour lire le signe, mets-en 2 à la suite.
    (...)
    C'est pas forcément plus pratique car ça va dépendre de l'architexture, parfois même un fflush ne suffit pas. J'ai toujours personnellement détesté le scanf ...

  13. #10
    Jack
    Modérateur

    Re : Algorithme qui ne veut pas fonctionner sur dev++

    parfois même un fflush ne suffit pas
    C'est pour cela que je ne lui ai pas proposé le fflush(stdin) dont le fonctionnement n'est pas standard.
    J'ai toujours personnellement détesté le scanf
    Ok, mais vu que diabetique debute et que son formateur le fait travailler avec scanf, on ne va pas l'embrouiller.

    Pour plus de détails, lire ceci.

    A+

Discussions similaires

  1. [Biologie Moléculaire] PCR qui veut pas marcher
    Par SoulPower dans le forum Biologie
    Réponses: 19
    Dernier message: 13/04/2010, 14h22
  2. ordinateur qui ne veut pas s'arréter
    Par jojo66 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 5
    Dernier message: 07/04/2010, 00h10
  3. Piano tétu, ne veut pas fonctionner
    Par safarzazar dans le forum Électronique
    Réponses: 4
    Dernier message: 12/10/2009, 19h38
  4. [Brun] Au secours ma télé ne veut pas fonctionner !!!
    Par noemay dans le forum Dépannage
    Réponses: 4
    Dernier message: 03/10/2009, 17h22
  5. [Brun] caméra vidéo sony qui ne veut plus fonctionner
    Par omalie dans le forum Dépannage
    Réponses: 3
    Dernier message: 15/10/2007, 21h45