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;
} |
Partager