All pastes #742428 Raw Edit

Something

public text v1 · immutable
·published 2007-10-19 14:44 UTC
rendered paste body
#include <time.h>

#include <ctype.h>

#include <stdio.h>

#include <stdlib.h>



#define NMAX 400



/*Prototypes de fonctions*/
void gen_jd3(int v[], int n);
void gen_jd2(int v[], int n);
void gen_jd1(int v[], int n);
void affresul( int v[], int n );
void tri_bulle(int v[], int n);



main()

{

	char rep;

	int n;   /* pour le nombre actif de postes du vecteur    */

	int v[NMAX];

	int ok;

	char s[80];
	int choix =0 ;
	int ok2;
	srand (time(NULL));

	do

	{

		 printf( "\n\t\tTRI\n\n" );

		do

		{

			printf( "Entrer un nombre positif de 1 a %d : ", NMAX - 1 );

			ok = scanf( "%d", &n );	//pour recommencer la boucle mettre le scanf dans une variable. Meilleur que le while avec comparaison sur la variable

			gets(s);

		}while( ! ok || n < 1 || n >= NMAX );

		do

		{
		printf ("Choix 1 : sens inverse, Choix 2 : sens normal, Choix 3 : generation aleatoire\n");
		ok2 = scanf ("%d",&choix);
		gets(s);

		if (choix == 2)

		gen_jd1( v , n);	//appel de la fonction de generation

		
		else if (choix == 1)
		gen_jd2( v , n);

		else if (choix == 3)
		gen_jd3(v, n);

		else
		ok2 = 0;
		}while( !ok2 );

		printf( "\nAvant le tri" );

		affresul( v, n);	//appel pour afficher avant le tri

		tri_bulle(v, n);	//appel du triage par bulle (inversement de max)

		printf( "\nApres le tri" );

		affresul( v, n);	//appel apres le tri

		printf( "\nRecommencer (o/n) ?" );
		//gets(s);

		scanf( "%c", &rep );

		gets(s);

	}while( tolower( rep ) != 'n' );
	printf("Appuyer sur une touche pour continuer");
	getchar();
//	getchar();

	return;

}


void gen_jd3(int v[], int n)

{	int i;

	for (i=0; i<n; i=i+1) 
		v[i]= rand()-rand();
		v[i]= i;	//met dans l'ordre inverse.

}


/****Generation sens_inverse****/


void gen_jd2(int v[], int n)

{	int i;

	for (i=0; i<n; i=i+1) 
		v[i]= n-i;	//met dans l'ordre inverse.

}

/****Generation sens_normal****/

void gen_jd1(int v[], int n)

{	int i;

	for (i=1; i<=n; i=i+1) 
		v[i]= i;	//met dans l'ordre normal.

}


/****Tri_a_bulle****/


void tri_bulle(int v[], int n)	//Le tri a bulle inverse les elements 2 a 2.On a donc l'element le plus grand a droite a chaque fois que l'on recompare.

{	int i ,j , temp;

	for (i=0; i<(n-1); i++)	//On enleve une case car on commence a 0

	{

		for (j=1; j<(n-i); j++)	// On recommence la boucle avec une case en moins

		{

			if (v[j-1]>v[j])	//Echange de variable

			{

				temp =v[j];

				v[j]= v[j-1];

				v[j-1]=temp;

			}

		}

	}

}



/****Affichage****/


void affresul( int v[], int n )	//Fonction d'affichage du tableau avant

{ 

  int i;

  printf( "\nle vecteur est: \n" );

  for( i =0; i < n; i++ ) printf( "%7d ", v[i] );

}