Vous êtes sur la page 1sur 3

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <string.h>
#pragma hdrstop

#include <tchar.h>
//---------------------------------------------------------------------------

#pragma argsused

/* (Algorithme : Allocation dynamique d'un tableau de pointeurs pour rcuprer une saisie oprateur)

// Fonction Saisie oprateur et stockage


char** Saisie_util_stock(int nb_lignes, char **tab) //nombre de lignes de saisie et pointeur du ta
{
//Dclaration
char tmp[100],*ptr_new;
int ligne;

for (ligne = 0; ligne < nb_lignes; ligne++) {


printf("Saisie %d : ",ligne+1);

//Saisie utilisateur
gets(tmp);

//Allocation mmoire pointeur


ptr_new= (char*) malloc ( (strlen(tmp)+1) * sizeof(char) ); // permet de rallouer la mmoir

//copie de la chaine de caractre utilisateur (tmp) dans la chane alloue (saisie)


strcpy(ptr_new,tmp);
*(tab+ligne)=ptr_new;

// on libre ptr_new
free(ptr_new);
return tab;

//Fin fonction
}

// Fonction tri alphabtique


void Tri(char **tab, int nb_lignes,char ordonancement)
{
// Dclaration variables
int tableau_trie=0, i, ligne,compare;
char *tmp;

// Lire et trier les lignes 2 2 (tri bulle)


for (i = nb_lignes-1 ; i >0 ; i--) {
tableau_trie=1;
for (ligne = 0; ligne < i; ligne++) {
// Tri croissant ou dcroissant ?
if (ordonancement=='d') {
// Tri dcroissant
compare=strcmp(*(tab+ligne),*(tab+ligne+1));
} else {
// Tri croissant
compare=strcmp(*(tab+ligne+1),*(tab+ligne));
}
if (compare<0) {
tmp =*(tab+ligne);
*(tab+ligne)= *(tab+ligne+1);
*(tab+ligne+1)= tmp;
tableau_trie=0;
}
}
if (tableau_trie==1) {
break;
}
}
return;

//Fin fonction
}

// Fonction affichage
void Affichage(char **tableau, int nb_lignes)
{
//Dclaration des variables
int ligne;

//Afficher le tableau
for (ligne =0; ligne< nb_lignes; ligne ++) {
printf("%s\n",*(tableau+ligne));
}
return;

//Fin fonction
}

//Programme principal
void main(void)
{
//allocation dynamique sur un tableau de pointeurs en fonction de la taille actuelle et de la ta

//Dclaration variables
char nb_li[20],chx[10]="";
char *tab[20]={NULL},ordonancement; // tableau de 20 chanes de caractres
int nb_lignes=0;
int utilisateur_andouille,i;

//Affichage BONJOUR
printf("####################################################################\n");
printf("### ###\n");
printf("### BONJOUR ###\n");
printf("### ###\n");
printf("####################################################################\n\n");

//combien de lignes saisir ?


printf("Combien de lignes a saisir ?\n");
gets(nb_li);
nb_lignes=atoi(nb_li);

//Appel fonction saisie et stockage


Saisie_util_stock(nb_lignes,tab);

//Choix du programme excuter


utilisateur_andouille:
clrscr();
printf("####################################################################\n");
printf("### ###\n");
printf("### Que faire ? ###\n");
printf("### 1) tri alphabetique croissant des chaines ###\n");
printf("### 2) tri alphabetique decroissant des chaines ###\n");
printf("### 3) tri alphabetique croissant des caracteres ###\n");
printf("### 4) tri alphabetique decroissant des caracteres ###\n");
printf("### ###\n");
printf("####################################################################\n\n");
printf("Choix : \n");

// Affichage avant tri


// printf("Tableau avant tri : \n");
// Affichage(tab,nb_lignes);

switch (atoi(gets(chx))) {
case 1: // Tri alphabtique croissant des chaines
clrscr();
puts("Tri alphabetique croissant des chaines\n");
// Affichage avant tri
printf("Tableau avant tri : \n");
Affichage(tab,nb_lignes);
// Tri alphabtique
Tri(tab,nb_lignes,'c');

// Affichage aprs tri


printf("Tableau apres tri alphabetique croissant : \n");
Affichage(tab,nb_lignes);

break;
case 2: // tri alphabetique dcroissant des chaines
clrscr();
puts("Tri alphabetique decroissant des chaines\n");
// Affichage avant tri
printf("Tableau avant tri : \n");
Affichage(tab,nb_lignes);

// Tri alphabtique
Tri(tab,nb_lignes,'d');

// Affichage aprs tri


printf("Tableau apres tri alphabetique : \n");
Affichage(tab,nb_lignes);

break;
case 3: // tri alphabetique croissant des caracteres
clrscr();
puts("Vous avez fait le 3");
break;
case 4: // tri alphabetique decroissant des caracteres
clrscr();
puts("Vous avez fait le 4");
break;
default: // Entrez un nombre entre 1 et 4
puts("Veuillez entrer un nombre compris entre 1 et 4 !");
getch();
goto utilisateur_andouille;
}
/*

//tri alphabtique
Tri(tab,nb_lignes);

// Affichage aprs tri


printf("Tableau apres tri alphabetique : \n");
Affichage(tab,nb_lignes);
*/
getch();
//Fin programme
}
//---------------------------------------------------------------------------

Vous aimerez peut-être aussi