Probleme en c

Bonjour,
svp aidez moi a corriger ce programme en c
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define n 4

tri_voiture(int n,char* x1,int* y1,float* z1);
char* lec_nv(int n);
int* lec_mat(int n);
float* lec_prix(int n);

void main()

{char *x1;
int *y1,n;
float* z1;
printf("donner le nombre de voiture a ajouter\n");
scanf("%d",&n);

tri_voiture(n,x1,y1,z1);
}
char* lec_nv(int n)
{
int i;
char m[20],*pm[n];
for(i=0;i<n;i++)
{
printf("donner le nom et la modele de la phrase numero %d\n",i);
gets(m);
pm[i]=(char*)malloc(sizeof(char)*strlen(m));
if(!pm[i])
strcpy(pm[i],m);
return pm[];

}
int* lec_mat(int n)
{int i,mat[2][n];
for(i=0;i<n;i++)
{printf("donner la matricule et la serie de la voiture numero %d\n",i);
scanf("%d%d",mat+i,mat[1]+i);}
return mat;
}
float* lec_prix(int n)
{int i;
float prix[n];
for(i=0;i<n;i++)
{printf("donner le prix de location par jour pour la voiture qui a comme numero de matricule %d\n",*(mat+i));
scanf("%f",prix+i);
}
return prix;
}
tri_voiture(int n,char* x,int* y,float* z)
{char *aux;
int *aux2,*aux4,i,n,t;
float aux3;

x=lec_nv(n);
y=lec_mat(n);
z=lec_prix(n);
while(t=0)
{t=1;
for(i=0;i<n;i++)
{if(*(mat=i)<*(mat+i+1))

aux2=mat+i;
mat+i=mat+i+1;
mat+i+1=aux2;

aux4=mat[1]+i;
mat[1]+i=mat[1]+i+1;
mat[1]+i+1=aux4;

aux=x+i;
x+i=x+i+1;
x+i+1=aux;

aux3=z+i;
z+i=z+i+1;
z+1+i=aux3;
t=0;
}
}
je vous remercie fortement
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  • Votes
  • Date
  • Date décroissante
  1. si tu veux qu'on t'aide il faut nous aider aussi...
    quel est le probleme ?
    erreur de compilation ? si oui laquelle a quelle ligne ?
    erreur de segmentation ?
    aucune erreur mais le programme fait pas ce que tu veux ? dans ce cas que veux tu faire ?
    1. dabord merci
      ba oui un problemme de compilation il me pose un envirent de 40 erreur;
      lorsque je corrige quelque uns il trouve des autres probleme
      j'ai pa arriver a resolut le probleme
      1. Wowww il va falloir que tu expliques à quoi ce sert tout ça parce que ton code est illisible
        1. bon alors j'ai pas de compilateur sous la main pour tester mais je vais comme meme essayé de t'aidé
          deja ton define n'est pas correct c'est plutot comme ça
          #define N 4

          a ce moment il faut que tu enleves tous tes
          int n
          qui ne serve a rien dans les parametres de tes fonctions et partout a l'interieur de tes fonctions tu mets N a la place de n
          ça devrait deja resoudre quelques erreurs...
          1. Sans vouloir te contredire Mype je pense qu'il a déclaré cette variable comme valeur par défaut au cas où l'utilisateur ne saisit pas une valeur correcte pour la phrase : "donner le nombre de voiture a ajouter"
            1. c'est possible mais je vois pas l'interet de demander a l'utilisateur le nombre de voiture a ajouter s'il n'y a qu'un seul choix possible...
              de plus ça ne va pas marcher parce que le nombre de voiture sera stocké dans la variable n et le define il va remplacer tous les N dans le programme par 4 il ne va pas stocké 4 dans la variable n
              dans ce cas tu peux laisser tous tes int n et enlever le define qui sert pas

              et kimologie merci de repondre sur ton post et pas en privé pour que tout le monde en profite
          2. voici ou j'ai arriver dans mon mini projet svp aidez moi pour lui completé

            #include<stdio.h>
            #include<string.h>
            #include<stdlib.h>

            char* lec_nv(int i)
            {

            char m[20],*p[100];
            //for(i=0;i<n;i++)

            printf("donner :\n*le nom et la modele de la voiture numero %d\n",i+1);
            fflush(stdin);
            gets(m);
            p[i]=(char*)malloc(sizeof(char)*strlen(m));
            if(!p[i])
            strcpy(p[i],m);

            return p[0];

            }
            int lec_mat()
            {int i=0,mat[100];
            //for(i=0;i<n;i++)
            do{
            printf("*le numero de sa matricule svp:\n");
            scanf("%d",mat+i);}while((*(mat+i)<100000)||(*(mat+i)>999999));
            return mat[0];
            }
            int serie()
            {int i=0,s[100];
            //for(i=0;i<n;i++)
            do{
            printf("*le numero de sa serie svp\n");
            scanf("%d",s+i);}while((*(s+i)<=0)||(*(s+i)>200));
            return s[0];
            }

            float lec_prix()
            {int i=0;
            float prix[100];
            //for(i=0;i<n;i++)
            do{
            printf("*sa prix de location par jour svp\n");
            scanf("%f",&prix[i]);}while(prix[i]<=0);

            return prix[0];
            }
            void tri_voiture(int n,char* x,int *mat,int *y,float *z)
            {char *aux;
            int *aux2,*aux4,i,t;
            float *aux3;

            for(i=0;i<n;i++)
            {x=lec_nv(i);
            *mat=lec_mat();
            *y=serie();
            *z=lec_prix();}
            while(t=0)
            {t=1;
            for(i=0;i<n;i++)
            {if(*(mat+i)<*(mat+i+1))
            {
            aux2=(mat+i);
            *(mat+i)=*(mat+i+1);
            *(mat+i+1)=*aux2;

            aux4=(y+i);
            *(y+i)=*(y+i+1);
            *(y+i+1)=*aux4;

            aux=x+i;
            *(x+i)=*(x+i+1);
            *(x+i+1)=*aux;

            aux3=z+i;
            *(z+i)=*(z+i+1);
            *(z+1+i)=*aux3;
            t=0;
            }
            }

            }
            }

            int verif_dat(int d)
            {int a,w,e,t;
            e=d/100000;
            w=(d/10000)%10;
            a=d%10000;
            if((a<1900)||(a>1988))
            t=0;

            else
            {if((a%4)==0)
            {if(((w==1)||(w==3)||(w==5)||(w==7)||(w==8)||(w==10)||(w==12))&&((e>0)&&(e<32)))
            t=1;
            else
            if(((w==4)||(w==6)||(w==9)||(w==11))&&((e>0)&&(e<31)))
            t=1;
            else
            if((w=2)&&((e>0)&&(e<30)))
            t=1;
            }
            else
            if((a%4)!=0)
            {if(((w==1)||(w==3)||(w==5)||(w==7)||(w==8)||(w==10)||(w==12))&&((e>0)&&(e<32)))
            t=1;
            else
            if(((w==4)||(w==6)||(w==9)||(w==11))&&((e>0)&&(e<31)))
            t=1;
            else
            if((w=2)&&((e>0)&&(e<39)))
            t=1;
            }
            }
            return t;
            }

            char* lec_nom(int i)
            {

            char m[20],*p[100];

            printf("donner :\n*le nom et le prenom du client numero %d\n",i+1);
            fflush(stdin);
            gets(m);
            p[i]=(char*)malloc(sizeof(char)*strlen(m));
            if(!p[i])
            strcpy(p[i],m);

            return p[0];

            }
            int lec_ncin()
            {
            int i=0,ncin[100];

            do{
            printf("*le numero de sa carte d'identitee svp:\n");
            scanf("%d",ncin+i);}while((*(ncin+i)<1000000)||(*(ncin+i)>9999999));
            return ncin[0];
            }
            int dat_nai()
            {int i=0,s[100];
            do{
            printf("*sa date de naissance en bloc svp\n");
            scanf("%d",s+i);}while(verif_dat(*(s+i))==0);
            return s[0];
            }

            void tri_client(int n,char* x,int *mat,int *y)
            {char *aux;
            int *aux2,*aux4,i,m;

            for(i=0;i<n;i++)
            {x=lec_nom(i);
            *mat=lec_ncin();
            *y=dat_nai();}
            while(m=0)
            {m=1;
            for(i=0;i<n;i++)
            {if(*(mat+i)>*(mat+i+1))
            {
            aux2=(mat+i);
            *(mat+i)=*(mat+i+1);
            *(mat+i+1)=*aux2;

            aux4=(y+i);
            *(y+i)=*(y+i+1);
            *(y+i+1)=*aux4;

            aux=x+i;
            *(x+i)=*(x+i+1);
            *(x+i+1)=*aux;

            m=0;
            }
            }

            }
            }

            int trouve_mat(int n,int* x ,int* g)
            {int i,t=0;
            for(i=0;i<n;i++)
            {if(*x==*(g+i))
            {t=1;break;}
            }
            return t;
            }

            int trouve_ncin(int n,int* x ,int* g )
            {int i,t=0;
            for(i=0;i<n;i++)
            {if(*x==*(g+i))
            {t=1;break;}
            }
            return t;
            }

            int* ajou_emp(int* x,int* y)
            {int t[4][100],i,aux,j,k,n;
            printf("donner les nombre des emprunt a ajouter\n");
            scanf("%d",&n);

            for(i=0;i<n;i++)
            {do{
            printf("donner le numero de matricule de la voiture a emprunter\n");
            scanf("%d",t+i);
            printf("donner le numero de cin du client\n");
            scanf("%d",*(t+1)+i);
            printf("donner la date du debut d'emprunt\n");
            scanf("%d",*(t+2)+i);
            printf("donner la date de fin d'emprunt\n");
            scanf("%d",*(t+3)+i);
            }while((trouve_mat(n,*(t+i),y)==0)||(trouve_ncin(n,((*t+1)+i),x)==0)||(verif_dat(*(*(t+2)+i))==0)||(verif_dat(*(*(t+2)+i))==0));

            if(*(t+i)<*(t+i+1))
            {for(j=0;j<4;j++)
            {for(k=0;k<n;k++)
            {aux=*(*(t+j)+k)=
            *(*(t+j)+k)=*(*(t+j)+k+1);
            *(*(t+j)+k+1)=aux;}
            }
            }
            }

            return t[0];
            }

            void main()

            {char x1=0;
            int mat=0,y1=0,l;
            float z1=0;

            char x2=0;
            int ncin=0,y2=0,k,*emp;

            printf("donner le nombre de voiture a ajouter\n");
            scanf("%d",&l);

            tri_voiture(l,&x1,&mat,&y1,&z1);

            printf("donner le nombre des client a ajouter\n");
            scanf("%d",&k);

            tri_client(k,&x2,&ncin,&y2);

            emp=ajou_emp(&mat,&ncin);

            }