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
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//tri des chaines
void tri(char *chaine[], int nombre);
//reaffichage de l'ecran
void affiche(char *tableau[], int nombre);
//fonction pour lire ce qui est tapé au clavier
int lire_clavier(char *saisie_clavier, int taille)
{
int compteur;
fgets(saisie_clavier, taille, stdin);
// saisie_clavier[taille-1]='\0';
for (compteur=0; saisie_clavier[compteur];compteur++)
{
if(saisie_clavier[compteur]=='\n')
{
saisie_clavier[compteur]='\0';
break;
}
}
printf("la saisie est : %s\n",saisie_clavier);
return (compteur);
}
// initialisation d'une chaine de 25 caractère
char *chaine[25];
//début du programme principal
int main()
{
//initialisation des variables
int nombre_a_trie=0;
int nombre=0;
char buffer[80];
//definition et affichage du titre
printf("Programme de tri de chaines de caracteres\ncombien de caratere a trie\n");
//lecture de la donne qui est mis dans la variable nombre_a_trie
scanf("%d",&nombre_a_trie);
//affichage du message
printf ("\nSaisir les %d chaines\n\n", nombre_a_trie);
//on incremente nombre_a_trie
nombre_a_trie++;
// tant que nombre est inferieur à nombre_a_trie
while(nombre<nombre_a_trie)
{
//appel de la fonction lire clavier
lire_clavier(buffer, sizeof(buffer));
//la valeur retournee n'est pas nulle on effectue la suite
if((chaine[nombre]=malloc(strlen(buffer)+1))!=NULL)
{
//on recopie la chaine qui a ete tapee dans la variables chaine
strcpy(chaine[nombre++],buffer);
}
}
//on appelle la fonction de tri en lui fournissant le tableau et le nombre de ligne
tri(chaine, nombre_a_trie);
printf("\nResultat du tri\n");
//on appelle la fonction d'affichage du tableau trié
printf("\n\n");
//on libère la memoire
free(0);
// sytem("pause");
return (0);
}
//fonction de tri des données
void tri(char *chaine[], int nombre)
{
//initialisation des variables
char *tableau2;
// pour compteur allant de 1 à nombre par pas de 1 faire -nombre etant donne par la fonction appellante
for(int compteur=1;compteur<nombre;compteur++)
//pour compteur2 allant de 0 à nombre-1 par pas de 1 faire -nombre etant donne par la fonction appellante
for (int compteur2=0;compteur2<nombre+1;compteur2++)
{
if (strcmp(chaine[compteur2], chaine[compteur2+1])>0)
{
tableau2=chaine[compteur2];
chaine[compteur2]=chaine[compteur2+1];
chaine[compteur2+1]=tableau2;
}
}
}
//fin de tri
//fonction d affichage du tableau trie
void affiche(char *tableau[], int nombre)
{
// intialisation des variables
int compteur;
// pour compteur allant de 0 à nombre par pas de 1-tableau et nombre etant données par la fonction appellante
for (compteur=0;compteur<nombre;compteur++)
// on affiche les donnée
printf("%s\n",tableau[compteur]);
} |
Partager