Bonjour,
Une petite aide pour ajouter un nom svp.
Quand j'ajoute un nom c'est bon. Le problème se pose quand je veux ajouter un deuxième nom: il s'ajoute correctement mais aussi le premier nom ajouté s'écrase et à sa place apparait le deuxième nom ajouté!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Nmax 50           /* Nmax: nbre maxi de  noms               */
#define Mmax 100          /* Mmax: nbre maxi de caracteres des noms */
 
 
 
int main(int argc, char *argv[]) 
{
    /* Declarations */
    char chaine[Nmax][Mmax];  /* Tableau des noms                                 */
    char *liste[Nmax];        /* Tableau de pointeurs sur les noms                */
    char *A;                  /* Pointeur auxiliaire                              */
    char c;                   /* Pour controler la boucle de saisie               */
    int I, J;                 /* Indices                                          */
    int n;                    /* Nbre reel des lignes du tableau des nom          */
    int pos;                  /* Indice a partir duquel le tableau n'est pas trie */
    char nom_aux[Mmax];       /* Chaine auxiliaire pour le menu                   */
    int B;                    /* Aura le role d'un booleen                        */
 
 
    /* Presentation du programme */    
puts("Bonjour,\n TurboListe est un programme qui vous permet de saisir et jouer sur une liste denoms en utilisant les options:\nRecherche : rechercher un nom sur la liste.\nAjout     : ajouter un nom a la liste.\nSupression: supprimer un nom de la liste.\n\nVeuillez commencer par la saisie de la liste.\n"); 
 
 
 
 
 
 
 
    /* Saisie des noms */
    I=0;
    do
    {  
        printf("Entrer le nom %d: ", I+1);
        gets((char*)(chaine+I));
        I++;
        if(I<Nmax)
          do
          {
            puts("\nVoulez-vous entrer un autre nom ?(O/N)\n");
            c=getch();
          }
          while(c!='o' && c!='O' && c!='n' && c!='N');
    }
    while(I<Nmax && (c=='o' || c=='O'));
    n=I--; /* Nbre reel des lignes du tableau */
 
 
    /* Affesctation des adresses aux pointeurs */
    for(J=0; J<n; J++)
        liste[J]=(char *)(chaine+J);
 
 
 
    /* Tri du tableau lexicographiquement */
    for (I=0; I<n-1; I++)
       {
        pos=I;
        for (J=I+1; J<n; J++)
          if (strcmp(liste[J],liste[pos])<0) 
             pos=J;
        A=liste[I];
        liste[I]=liste[pos];
        liste[pos]=A;
       }
 
 
 
    /* Affichage du tableau trie */
    puts("Liste triee lexicographiquement:\n");
    for (J=0; J<n; J++)
        puts(liste[J]);
 
 
do
{  
 
 
       c=getch(); 
 
 
      /* Ajout d'un nom */
    if(c=='a')
         {
          if(n<Nmax)
          {
          puts("\nEntrer le nom que vous voulez ajouter");
          gets(nom_aux);
          I=-1;
          do
          I++;
          while(strcmp(liste[I], nom_aux)<0 && I<n-1);
          if(strcmp(liste[n-1], nom_aux)<0)
             J=n;
          else
            {
             J=I;
             for(I=J; I<n; I++)
               liste[n-I+J]=liste[n-1-I+J];
            }
          liste[J]=nom_aux;
          n++; /* Nbre reel des lignes du tableau */        
          }
          else
          puts("\nTaille maximale atteinte");
          puts("\nListe triee lexicographiquement:");
          for (J=0; J<n; J++)
           puts(liste[J]);
         }
         c=getch();
}
 while(c=='r');       
 
  system("PAUSE");	
  return 0;
}