- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #define max 100
- struct ligne {
- char l[max];
-
- } ;
- int main () {
- struct ligne parag[max];
- char a,prior[27]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
-
- void priority (char *);
- void saisie (struct ligne * parag);
- void tri (struct ligne * parag,char *);
- void affichage (struct ligne * parag);
-
-
- printf("voulez vous changer l'ordre de priorite o/n\n(l'ordre alphabetique par default)");
- a=getch();
- printf("\n");
- if (a=='o')
- priority(prior);
- saisie(parag);
- flushall();
- tri(parag,prior);
- affichage(parag);
-
- getch();
- return 0;
- }
-
- /*********************priority********************************/
-
- void priority (char * tab) {
- int i=0,k;
- char c;
-
- printf("\n\nentrez sucsessivement l'ordre souhaite du tri :\n\n");
- for (;i<=25;i++)
- {
- do
- {
- c=getche();
- k=0;
- while ((k<=i-1)&&(*(tab+k)!=c))
- k++;
- if (*(tab+k)==c)
- printf("\b\a");
-
- } while (*(tab+k)==c);
- printf(" ");
- *(tab+i)=c;
- } printf("\n\n");
- }
-
- /******************************end priority*******************/
-
- /*********************saisie**********************************/
-
- void saisie (struct ligne * tab) {
- char c[max];
- int i=0;
- printf("\n\nentrer votre paragrephe chaque fois que vous terminer une\n");
- printf("ligne apuier sur entre,pour terminer la saisie enter une ligne vide\n");
- printf("\n\n**************************************\n\n");
- do
- {
- gets(c);
- strcpy((tab+i)->l,c);
- i++;
- }
- while ((c[0]!='\0')||(i==max));
- printf("******************************************\n\n");
- }
-
- /*****************************end saisie************************/
-
- /*******************************tri*****************************/
-
- void tri (struct ligne * tab,char * pri) {
- char c[max];
- int i=0,j,min,g=0,k=0;
-
-
- while (*(tab+i+1)->l!='\0')
- {
-
- min=i;
- j=i+1;
- while (*(tab+j)->l!='\0')
- {
- g=0;
- k=0;
- while ((g==0)&&(k<27))
- {
- if (*(tab+j)->l==*(pri+k))
- g=1;
- if (*(tab+min)->l==*(pri+k))
- g=-1;
- k++;
- }
- if (g>0)
- min=j;
- j++;
- }
- strcpy(c,(tab+i)->l);
- strcpy((tab+i)->l,(tab+min)->l);
- strcpy((tab+min)->l,c);
- i++;
- }
- }
-
- /*************************end tri********************************/
-
- /***************************affichage****************************/
-
- void affichage (struct ligne * tab) {
-
- int i=0;
-
-
- printf("\n\n************le paragaraphe triee :**************\n\n");
- while (*(tab+i)->l!='\0')
- {
- printf("%s\n",(tab+i)->l);
- i++;
- }
- printf("\n******************************************************\n");
- }
- /***************************end affichage**************************/
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define max 100
struct ligne {
char l[max];
} ;
int main () {
struct ligne parag[max];
char a,prior[27]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
void priority (char *);
void saisie (struct ligne * parag);
void tri (struct ligne * parag,char *);
void affichage (struct ligne * parag);
printf("voulez vous changer l'ordre de priorite o/n\n(l'ordre alphabetique par default)");
a=getch();
printf("\n");
if (a=='o')
priority(prior);
saisie(parag);
flushall();
tri(parag,prior);
affichage(parag);
getch();
return 0;
}
/*********************priority********************************/
void priority (char * tab) {
int i=0,k;
char c;
printf("\n\nentrez sucsessivement l'ordre souhaite du tri :\n\n");
for (;i<=25;i++)
{
do
{
c=getche();
k=0;
while ((k<=i-1)&&(*(tab+k)!=c))
k++;
if (*(tab+k)==c)
printf("\b\a");
} while (*(tab+k)==c);
printf(" ");
*(tab+i)=c;
} printf("\n\n");
}
/******************************end priority*******************/
/*********************saisie**********************************/
void saisie (struct ligne * tab) {
char c[max];
int i=0;
printf("\n\nentrer votre paragrephe chaque fois que vous terminer une\n");
printf("ligne apuier sur entre,pour terminer la saisie enter une ligne vide\n");
printf("\n\n**************************************\n\n");
do
{
gets(c);
strcpy((tab+i)->l,c);
i++;
}
while ((c[0]!='\0')||(i==max));
printf("******************************************\n\n");
}
/*****************************end saisie************************/
/*******************************tri*****************************/
void tri (struct ligne * tab,char * pri) {
char c[max];
int i=0,j,min,g=0,k=0;
while (*(tab+i+1)->l!='\0')
{
min=i;
j=i+1;
while (*(tab+j)->l!='\0')
{
g=0;
k=0;
while ((g==0)&&(k<27))
{
if (*(tab+j)->l==*(pri+k))
g=1;
if (*(tab+min)->l==*(pri+k))
g=-1;
k++;
}
if (g>0)
min=j;
j++;
}
strcpy(c,(tab+i)->l);
strcpy((tab+i)->l,(tab+min)->l);
strcpy((tab+min)->l,c);
i++;
}
}
/*************************end tri********************************/
/***************************affichage****************************/
void affichage (struct ligne * tab) {
int i=0;
printf("\n\n************le paragaraphe triee :**************\n\n");
while (*(tab+i)->l!='\0')
{
printf("%s\n",(tab+i)->l);
i++;
}
printf("\n******************************************************\n");
}
/***************************end affichage**************************/