Probleme pour debutant en language C
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
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
-
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 -
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 -
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); -
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.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
-
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