Exercice en c + fonctions

Fermé
debute - 28 janv. 2008 à 08:58
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 28 janv. 2008 à 10:05
bonjour
voici mon programme qui demande nom, prenom, sexe et date et doit faire ensuite 140186JOBNAT

si une fille né le 14 janvier 1984; JOBE Natalie

j'ai un problème pour former "140186JOBNAT"

on pourrait m'aider ? j'ai refait mon code le voici

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NOM 25
#define SEXE 2




int nom ( char *nom)
int prenom(char *prenom )
int sexe(char *sexe )
int jour(int *jourN)
int mois( char *moisN)
int annee ( int *anneeN);

//void matricule (char *nom,char *prenom,char *sexe)



void main (void)

{
char nom[NOM],char prenom[NOM],char sexe [SEXE];
int jourN,anneeN;
char moisN;


//matricule1= matricule();
}



int dnom (char *pnom)
{
int nbelem;
fflush(stdin);

for( nbelem=0;nbelem < (NOM-1) && *nom != '\n';nbelem++,nom++)
{


do
{
printf(" entrez votre nom de famille\n");
*nom=getchar();
touppper(*nom);

}while((*nom<'A') || (*nom > 'Z') && (*nom =! '-'));

(*nom-1)='\0';
}
return nom

}

int prenom (char *prenom)

{
int nbelem;
fflush(stdin);
for( nbelem=0;nbelem < (NOM-1) && *prenom != '\n';nbelem++,prenom++)
{


do
{
printf(" entrez votre nom de prenom\n");
*prenom=getchar();
touppper(*prenom);

}while((*prenom<'A') || (*prenom> 'Z') && (*prenom != '-'));

(*prenom - 1)='\0';
}

return pprenom

}

int demande_sexe(char *sexe)
{
int nbelem;
fflush (stdin);
for(nbelem=0;nbelem<(NOM-1) && *sexe !='n';nbelem++,sexe++)
{
do
{
printf("un homme ou une femme : tapez M/F\n");
*psexe=getchar();
toupper(*sexe);

}while ((*sexe != 'M') || (*sexe !='F'));

return sexe



}

int jour(int *jourN)

{
int c=1;

while(c==1)
{

do
{
printf("Entrez le jour de votre naissance: ");
scanf("%d",&jourN);

}while(jourN<1 || jourN>31);
}
}

int mois(char *moisN)
{

int c=1,mois[12];




while(c==1)
{
do
{
printf("Entrez le mois de votre naissance: ");
scanf("%c",&moisN);

}while((moisN<1) || (moisN>12));


}

}


int annee (int anneeN)

{

int c=1;

while (c==1)
{
do
{
printf("Entrez l'annee de votre naissance: ");
scanf("%d",&anneeN);

}while(anneeN>1900);
}


}





//void matricule(char *nom,char *prenom,char *sexe, int *jourN,int *anneeN, char *moisN)
{

int n;

nom[3] = '\0';
prenom[3] = '\0';
annee=anneeN%100 ;
jour = jourN ;
mois=moisN;
sexe= sexe
sprintf( matricule, %c%d%d%d%s%s", sexe,jour, mois, annee, nom, prenom );




}

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 janv. 2008 à 10:05
Salut,

Ton code est truffé de fautes. Je pense que tu n'as pas compris la notion de pointeurs. En regardant dans la partie cours de ce site, tu trouveras tout ce que tu veux. Sinon sur internet, tu trouveras toutes les informations que tu voudras ;)
J'ai corrigé tes erreurs, ça compile. Mais ton programme ne marchera pas pour autant.
Sinon la prochaine fois, utilise les balises de conservations de forme du code, on y verra plus clair.



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NOM 25
#define SEXE 2




int nom ( char *nom);
int prenom(char *prenom );
int sexe(char *sexe );
int jour(int *jourN);
int mois( char *moisN);
int annee ( int anneeN);


void matricule(char *nom,char *prenom,char *sexe, int *jourN,int *anneeN, char *moisN);




int main(void)
{
char nom[NOM], prenom[NOM],sexe [SEXE];
int jourN,anneeN;
char moisN;


 return 0;
//matricule1= matricule();
}



int nom (char *nom)
{
int nbelem;
fflush(stdin);

 for( nbelem=0;nbelem < (NOM-1) && *nom != '\n';nbelem++,nom++)
   {


     do
       {
	 printf(" entrez votre nom de famille\n");
	 *nom=getchar();
	 toupper(*nom);

       }while((*nom<'A') || (*nom > 'Z') && (*nom =! '-'));

     *(nom-1)='\0';
   }
return 1;

}

int prenom (char *prenom)

{
int nbelem;
fflush(stdin);
for( nbelem=0;nbelem < (NOM-1) && *prenom != '\n';nbelem++,prenom++)
{


do
{
printf(" entrez votre nom de prenom\n");
*prenom=getchar();
toupper(*prenom);

}while((*prenom<'A') || (*prenom> 'Z') && (*prenom != '-'));

 *(prenom - 1)='\0';
}

return 1;

}

int demande_sexe(char *sexe)
{
  int nbelem;
  fflush (stdin);
  for(nbelem=0;nbelem<(NOM-1) && *sexe !='n';nbelem++,sexe++)
    {
      do
	{
	  printf("un homme ou une femme : tapez M/F\n");
	  *sexe=getchar();
	  toupper(*sexe);

	}while ((*sexe != 'M') || (*sexe !='F'));

      return 1;

    }
}

  int jour(int *jourN)

  {
    int c=1;

    while(c==1)
      {

	do
	  {
	    printf("Entrez le jour de votre naissance: ");
	    scanf("%d",&jourN);

	  }while(*jourN<1 || *jourN>31);
      }
    return 1;
  }


  int mois(char *moisN)
  {

    int c=1,mois[12];




    while(c==1)
      {
	do
	  {
	    printf("Entrez le mois de votre naissance: ");
	    scanf("%c",&moisN);

	  }while((*moisN<1) || (*moisN>12));


      }

  }


int annee (int anneeN)

{

  do
    {
      printf("Entrez l'annee de votre naissance: ");
      scanf("%d",&anneeN);

    }while(anneeN>1900);

  return anneeN;
}




  void matricule(char *nom,char *prenom,char *sexe, int *jourN,int *anneeN, char *moisN)
  {

    int n;
    int annee;
    int jour;
    int mois;
    nom[3] = '\0';
    prenom[3] = '\0';
    annee=*anneeN%100 ;
    jour = *jourN ;
    mois=*moisN;

    printf("%s%d%d%d%s%s",sexe,jour, mois, annee, nom, prenom );


}

0