Probleme pour debutant en language C

kakashi-sensei -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
j'apprends a programmer , je suis dans le cour des headers et j'ai écrit ce petit code
=============================
#include <stdio.h>
#include <stdlib.h>
#include "ledouble.h"
#include "triple.h"
int main(int argc, char *argv[])
{
int choice=0 , number=0;
printf(" veuillez chosir votre operation : \n");
printf("1. Double : \n");
printf("2. Triple : \n");
do
{

scanf("%ld",&choice);
printf(" veuiller entrer votre nombre : ");
scanf("%ld",&number);
if (choice =1)
printf(" votre resultat est : %d\n", ledouble(number));
else if (choice =2)
printf(" votre resultat est : %d\n", triple(number));
else
printf("votre chiffre est incorrect , veuillez entrer un chiffre correcte :");
}while ( choice !=1 || choice !=2);

system("PAUSE");
return 0;
}
===================================
avec les autres fichiers sources contenant la fonction ledouble et la fonction triple
alors voilà le problème , au moment ou ça me demande de taper mon choix , quand je tape 2 ça ne lance pas la fonction triple , mais ça double ma variable :s , je voudrait savoir ou est l'erreur svp
Configuration: Windows XP
Firefox 3.0.11

7 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Une erreur classique lorsqu'on débute : l'opérateur d'égalité.
    En C, l'opérateur d'égalité est le double égal (==) et non le simple égal (opérateur d'affectation).

    if (choice =1)
    Ici cette condition est toujours vraie car choice sera affecté à 1 (simple opérateur d'affectation) et renverra 1 (valeur assimilée à vraie).
    Il faut mettre : if(choice==1)

    Je te laisse le soin de corriger dans les else if.

    Cdlt
    1
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Il nous faudrait tout le code source. C'est peut être par exemple une erreur de copier coller dans l'implémentation de la fonction "letriple".

    Bonne chance
    0
  3. kakashi-sensei
     
    voila
    ledouble.c
    -------------------
    #include <stdio.h>
    #include <stdlib.h>

    int ledouble(int numero)
    {

    return numero *2;
    system("PAUSE");
    return 0;
    }
    --------------------
    ledouble.h
    --------------------
    int ledouble(int numero);
    --------------------
    triple.c
    --------------------
    #include <stdio.h>
    #include <stdlib.h>

    int triple(int numero)
    {

    return numero * 3;
    system("PAUSE");
    return 0;
    }
    ------------------
    triple.h
    ------------------
    int triple(int numero);
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Rah quel œil j'avais même pas vu. BIen vu fiddy. Le pire c'est que normalement son compilateur a dû lui mettre un warning qu'il a allégrement omis.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kakashi-sensei
     
    non mon compilateur ne m'a pas mis de warning , ça s'est lancé correctement l'erreur était juste dans le fonctionnement du programme.
    merci ça a bien marché , quel erreur j'ai commis xd
    0
  7. Utilisateur anonyme
     
    Erreur typique comme le &&..
    0
  8. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Je ne sais pas quel compilateur tu utilises mais tu dois pouvoir régler le niveau de warning dans ton IDE ou passer des options au compilateur. Si par exemple c'est un compilateur gcc ou g++ (par exemple si tu utilises code::blocks ou dev-cpp) les options magiques sont -W -Wall.

    Bonne chance
    0