nolimites Z'avez pas vu Mirza? | Bonjour,
j'ai un problème avec mon programme. Je vous explique son but. Je dois rentrer quelques fiches via une structure, les afficher (jusque là tout va bien), puis je dois trier ces fiches via un vecteur d'index (par la méthode du tri par insertion) et les afficher dans l'ordre alpabétique. Mon programme plante lors de l'affichage des fiches triées (il plante peut être au niveau du tri). Pourriez vous donc me dire ce qui ne va pas Je joins ici le code et les warning que me renvois visual c++
Merci d'avance
Code :
- #include<stdlib.h>
- #include<stdio.h>
- #include<conio.h>
- #include<string.h>
- void affichage(int, struct FICHE *);
- void encodage(int, struct FICHE *);
- void indexation(int, struct FICHE *, struct INDEX *);
- void tri(int, struct INDEX *);
- void affichage_index(int, struct FICHE *, struct INDEX *);
- struct FICHE
- {
- char nom[20];
- int age;
- char info[50];
- };
- struct INDEX
- {
- char nom[20];
- int indice;
- };
- void encodage(int nbre_elem, struct FICHE *pt)
- {
- int i,j=0;
- for(i=0;i<nbre_elem;i++)
- {
- printf("------Fiche numero %d-----",i+1);
- printf ("\n\nVeuillez saisir le nom: " );
- fflush(stdin);
- gets(pt->nom);
- printf ("\nVeuillez l'age: " );
- fflush(stdin);
- scanf ("%d",&pt->age);
- printf ("\nVeuillez saisir l'info: " );
- fflush(stdin);
- gets(pt->info);
- pt++;
- }
- }
- void affichage(int nbre_elem, struct FICHE *pt)
- {
- int i;
- for(i=0;i<nbre_elem;i++)
- {
- printf("------Fiche numero %d-----",i+1);
- printf ("\nnom: " );
- puts (pt->nom);
- printf ("age: %d",pt->age);
- printf ("\ninfo: " );
- puts (pt->info);
- pt++;
- }
- }
- void indexation(int nbre_elem, struct FICHE *pt, struct INDEX *pt2)
- {
- int i;
- for(i=0;i<nbre_elem;i++)
- {
- strcpy (pt2->nom,pt->nom);
- pt2->indice = i;
- pt++;
- pt2++;
- }
- }
- void tri(int nbre_elem, struct INDEX *pt2)
- {
- int i,j,test,inser2;
- char inser[20];
- i=1;
- while(i<nbre_elem)
- {
- //inser = pt2+i;
- strcpy (inser,(pt2+i)->nom);
- inser2 = (pt2+i)->indice;
- j = i-1;
- test = strcmp(inser,(pt2+j)->nom);
- //while (inser < pt2+j && j>= 0)
- while (test < 0 && j>= 0)
- {
- strcpy ((pt2+(j+1))->nom,(pt2+j)->nom);
- (pt2+(j+1))->indice = (pt2+j)->indice;
- j = j-1;
- }
- strcpy ((pt2+(j+1))->nom,inser);
- (pt2+(j+1))->indice = inser2;
- i++;
- }
- }
- void affichage_index(int nbre_elem, struct FICHE *pt, struct INDEX *pt2)
- {
- int i,j;
- for(i=0;i<nbre_elem;i++)
- {
- j = (pt2+i)->indice;
- printf("------Fiche triee numero %d-----",i+1);
- printf ("\nnom: " );
- puts ((pt+j)->nom);
- printf ("age: %d",(pt+j)->age);
- printf ("\ninfo: " );
- puts ((pt+j)->info);
- printf ("\nindice de tri: %d",pt2->indice);
- }
- }
- void main()
- {
- struct FICHE tab[50], * pt;
- struct INDEX tab2[50], * pt2;
- int nbre_elem;
- pt = &tab[0];
- pt2 = &tab2[0];
- printf ("Combien de fiches voulez vous encoder? : " );
- scanf ("%d", &nbre_elem);
- encodage(nbre_elem,pt);
- affichage(nbre_elem,pt);
- indexation(nbre_elem,pt,pt2);
- tri(nbre_elem,pt2);
- affichage_index(nbre_elem,pt,pt2);
- }
|
Code :
- --------------------Configuration: lc40_hfr - Win32 Debug--------------------
- Compiling...
- lc40_hfr.c
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(98) : warning C4047: 'function' : 'char *' differs in levels of indirection from 'char '
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(98) : warning C4024: 'strcpy' : different types for formal and actual parameter 1
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(102) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(102) : warning C4024: 'strcmp' : different types for formal and actual parameter 1
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(112) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'char '
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(112) : warning C4024: 'strcpy' : different types for formal and actual parameter 2
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(124) : warning C4047: '=' : 'struct FICHE *' differs in levels of indirection from 'int '
- c:\documents and settings\arnaud\bureau\nouveau dossier\lc40_hfr.c(98) : warning C4700: local variable 'inser' used without having been initialized
- lc40_hfr.obj - 0 error(s), 8 warning(s)
|
Message édité par nolimites le 16-02-2005 à 15:27:06
|