Problemes de macro

Fermé
sikim69 Messages postés 33 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 - Modifié par sikim69 le 24/01/2013 à 12:05
sikim69 Messages postés 33 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 - 24 janv. 2013 à 19:57
Bonjour, voilà je suis en cours d'informatique en langage C.

J'ai un probleme de syntaxe dans la macro d'apres le programme d'execution..

Mais je ne trouve pas où est l'erreur..

Pouvez vous me le dire ?

(LA DEFINE apres les // fonctionne..)
(LA DEFINE sans les // ne fonctionne pas..)

#include<stdio.h>  
#include<conio-bis.h>  
#define ANCIENNETE(jour,mois,annee,jour2,mois2,annee2) (mois2 > mois ?  m= mois2 - mois, annee2 - annee : mois2 == mois && jour2 >= jour ? m = 12 - mois - mois2, annee2 - annee-1)  
//#define ANCIENNETE(jour,mois,annee,jour2,mois2,annee2) (mois2 > mois ? annee2 - annee : mois2 == mois && jour2 >= jour ? annee2 - annee : annee2 - annee-1)  

int main()  
{  
    int x,annee,annee2,mois,mois2,jour,jour2,m;  
      
    printf("Quel est la date de votre arrivee ? (ECRIRE EN CHIFFRE)");  
    printf("\nAnnee ? ");  
    scanf("%d",&annee);  
   printf("\nMois ? ");  
    scanf("%d",&mois);  
    printf("\nJour ? ");  
    scanf("%d",&jour);  
    printf("\nDate d'arrivee : %d/%d/%d",jour,mois,annee);   
      
    printf("\n\nQuel est la date du jour ? (ECRIRE EN CHIFFRE)");  
    printf("\nAnnee ? ");  
   scanf("%d",&annee2);  
    printf("\nMois ? ");  
    scanf("%d",&mois2);  
    printf("\nJour ? ");  
    scanf("%d",&jour2);  
    printf("\nDate actuelle : %d/%d/%d",jour2,mois2,annee2);  
                        
    x=ANCIENNETE (jour,mois,annee,jour2,mois2,annee2);  
    printf("\n\nResultat : %d mois et %d annees",m,x);  
      
      
      
    getchar(); getchar();  
    return 0;  
}


Merci et bonne journée à vous !!

A voir également:

3 réponses

kratosmindfreak Messages postés 43 Date d'inscription mercredi 23 janvier 2013 Statut Membre Dernière intervention 1 février 2013
24 janv. 2013 à 13:55
le probleme c'est dans le macro ANCIENNETe ne retourne pas une valeur mais tu as fais
x=ANCIENNETE (jour,mois,annee,jour2,mois2,annee2);
donc il faut passer x comme un parametre a ton macro
x=ANCIENNETE (x,jour,mois,annee,jour2,mois2,annee2);
en plus dans le macro il ya un erreur de syntax cad dans:
la deuxieme condition mois2 == mois && jour2 >= jour ? m = 12 - mois - mois2, annee2 - annee-1
il faut ajouter l'autre cas si la condition mois2 == mois && jour2 >= jour n'est pas verifier il faut faire
mois2 == mois && jour2 >= jour ? m = 12 - mois - mois2, annee2 - annee-1:valeur
donc le programme complet est:
_________
#include<stdio.h>
#include<conio.h>
#define ANCIENNETE(x,jour,mois,annee,jour2,mois2,annee2) (x=(mois2 > mois ? m= mois2 - mois, annee2 - annee : ((mois2 == mois && jour2 >= jour)? (m=12-mois-mois2,annee2-annee-1):autre valeur)));



int main()
{
int x,annee,annee2,mois,mois2,jour,jour2,m;

printf("Quel est la date de votre arrivee ? (ECRIRE EN CHIFFRE)");
printf("\nAnnee ? ");
scanf("%d",&annee);
printf("\nMois ? ");
scanf("%d",&mois);
printf("\nJour ? ");
scanf("%d",&jour);
printf("\nDate d'arrivee : %d/%d/%d",jour,mois,annee);

printf("\n\nQuel est la date du jour ? (ECRIRE EN CHIFFRE)");
printf("\nAnnee ? ");
scanf("%d",&annee2);
printf("\nMois ? ");
scanf("%d",&mois2);
printf("\nJour ? ");
scanf("%d",&jour2);
printf("\nDate actuelle : %d/%d/%d",jour2,mois2,annee2);

x=ANCIENNETE(x,jour,mois,annee,jour2,mois2,annee2)
printf("\n\nResultat : %d mois et %d annees",m,x);
getch();
}
____________
Je m'excuse pour mon mauvais français je souhaite que tu m'a compris :D
GOOD LUCK
0
sikim69 Messages postés 33 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 1
24 janv. 2013 à 19:56
Merci du temps que tu m'as consacré.. Mais le probleme est que le code ne marche pas.. J'ai une erreur de syntaxe.. Mais c'est au niveau des parentheses, des deux points etc.. Mais j'arrive pas à trouver..
0
sikim69 Messages postés 33 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 30 mars 2013 1
24 janv. 2013 à 19:57
#include<stdio.h>
#include<conio-bis.h>
#define ANCIENNETE(jour,mois,annee,jour2,mois2,annee2) (mois2 >= mois && jour2>=jour ? (m= mois2 - mois, annee2 - annee : (mois2 >= mois && jour2 <= jour ? (m=mois2-mois-1,annee2-annee : (mois2<mois && jour2>=jour ? (m=mois-mois2, m=12-m, annee2-annee-1 : (mois2<mois && jour2<jour ? m=mois-mois2, m=12-m-1, annee2-annee-1)))))))

int main()
{
    int x,annee,annee2,mois,mois2,jour,jour2,m;
    
    printf("Quel est la date de votre arrivee ? (ECRIRE EN CHIFFRE)");
    printf("\nAnnee ? ");
    scanf("%d",&annee);
   printf("\nMois ? ");
    scanf("%d",&mois);
    printf("\nJour ? ");
    scanf("%d",&jour);
    printf("\nDate d'arrivee : %d/%d/%d",jour,mois,annee); 
    
    printf("\n\nQuel est la date du jour ? (ECRIRE EN CHIFFRE)");
    printf("\nAnnee ? ");
   scanf("%d",&annee2);
    printf("\nMois ? ");
    scanf("%d",&mois2);
    printf("\nJour ? ");
    scanf("%d",&jour2);
    printf("\nDate actuelle : %d/%d/%d",jour2,mois2,annee2);
                      
    x=ANCIENNETE (jour,mois,annee,jour2,mois2,annee2);
    printf("\n\nResultat : %d mois et %d annees",m,x);
    
    
    
    getchar(); getchar();
    return 0;
}


Revoilà le code modifié.. J'espere que vous pourrez m'aider à rendre le macro correct..
0