Un petit problème en c

Fermé
anassinho13 Messages postés 18 Date d'inscription mardi 4 octobre 2011 Statut Membre Dernière intervention 4 juillet 2013 - 6 avril 2012 à 08:41
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 avril 2012 à 09:47
Bonjour tout le monde,

En fait à mon passage,j'ai voulu se rappeler un peu de ce langage que j'apprécie d'ailleurs. sinon il d''agit d'un programme qui appel une fonction ou une procédure comme vous voulez parce qu'il est de type void.Cette dernière permet de renvoyer le nombre paire et le nombre impaire parmi les variable que j'ai entré en paramettre de la fonction par l'intermédiaire d'une structure.Le problème c'est que mon programme renvoie tout le temps les valeurs sont paire il passe pas à l'autre condition comme c'etait avant lorsque j'ai testé l'exo le main.
ci-dessous mon code et merci d'avance
#include<stdio.h>
#include<conio.h>
struct donnee
{
int a;
int b;
};
void paire_impaire(donnee)
{
donnee d;
if(d.a%2==0 && d.b%2==0)
printf("a et b sont paire ");
else
if(d.a%2!=0 && d.b%2==0)
printf("a est impaire mais b est paire ");
else if(d.a%2==0 && d.b%2!=0)
printf("a est paire mais b est impaire ");
else if(d.a%2!=0 && d.b%2!=0)
printf("a et b sont tous impaires ");
}
main()
{
donnee d;
int T[20];
printf("entrer la valeur de a : ");
scanf("%d",&d.a);
printf("entrer la valeur de b : ");
scanf("%d",&d.b);
paire_impaire(d);
getch();
}




1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
6 avril 2012 à 09:47
le problème viens de la déclaration de ta fonction :
void paire_impaire(donnee) //ici tu indique une fonction qui prend en paramètre une variable de type donnee, mais tu oublie de lui donné un nom
{
donnee d;ici tu redéfini une NOUVELLE variable d de type donnee qui n'a donc rien a voir avec celle du main. 
En correction, il faut déjà faire ça :
void paire_impaire(donnee d)
{
//donnee d; 
ça devrait suffire
0