Nombres triés

Contenu du snippet

Vous entrez des entiers et le programme remet ces entiers dans l'ordre croissant et les affiches. l'entrée de -1000 signifie que vous avez entrez tous les int voulu.

Source / Exemple :


/*************************************************************/
/*                       première version avec 2 tableaux                                 */
/*     1 pour enregistrer les int et 1 ou les int sont triés par ordre croissant  */
/*************************************************************/

#include <iostream.h>

void main()
{
	int tab[50];
	int tab2[50];		//tableau trié
	int n = 0;
	int i = 0;
	int j = 0;
	int t = 0;		//pour parcourir le tableau
	int countm = 0;	//pour compté le nombre de int < a celui testé
	int counte = 0;	//pour compté le nombre de int = a celui testé

	//saisie des int
	cout << "Entrez des int:" << endl;
	while((tab[n-1] != -1000) && (n < 50))
	{
		cin >> tab[n];
		n++;
	}//fin du while
	//rangement des int
	for( i = 0; i < (n-1); i++)		//teste chaque valeur une  
	{								//par une a toute les autres
		while(t < (n-1))
		{
			if(tab[i] > tab[t])		//teste si la valeur a testé 
			{						//est > a celle que l'on compare
				countm++;
			}
			else
			{
				if(tab[i] == tab[t])//teste si la valeur a testé 
					counte++;		//est = a celle que l'on compare
			}
			
			t++;

		}//fin du while(t < (n-1))
		
		while(counte >= 1)		//au cas ou des valeur soient = 
		{
			tab2[countm + counte -1] = tab[i];
			counte--;
		}//fin du while(counte >= 1)

		countm = 0;
		counte = 0;
		t = 0;
		

	}//fin du for
	
	//affiche les int dans l'ordre
	for(j = 0; j < (n-1); j++)
		cout << tab2[j] << " ";
	cout << endl;

}//fin du main

/*********************************************************/
/*                       seconde version mai avec 1 tableau                       */
/*                            qui enregistre et trie a la fois                           */
/*********************************************************/

#include <iostream.h>
#include <iomanip.h>

void main()
{
	int tab[50];
	int n = 0;			
	int i = 0;	
	int t = 1;	
	int mem = 0;
	int cligne = 0;

	//saisie des int
	//jusqu'à ce que l'on tape -1000
	//ou qu'il y ai 50 int
	cout << "Entrez des int:" << endl;
	while((tab[n-1] != -1000) && (n < 50))
	{
		cin >> tab[n];
		n++;
	}//fin du while
	
	//teste chaque valeur une par une 
	for( i = 0; i <= (n-1); i++)		
	{
		//pour eviter de tester le int de quit
		if(tab[i] != -1000)				
		{
			t = (i + 1);
			//compare un int a tous les autres 1 par 1
			while( (t < n) && (tab[t] != -1000))
			{
				//inverse les 2 int comparés si
				//le premier int est > au second testé
				if(tab[i] > tab[t])
				{
					mem = tab[i];
					tab[i] = tab[t];
					tab[t] = mem;
				}

				t++;
			}//fin du while
			// affiche par ligne de 5 int
			if(cligne < 5)
			{
				cout << setw(10) << tab[i];
				cligne++;
			}	
			else
			{
				cout << endl << setw(10) << tab[i];
				cligne = 1;
			}
		}//fin du if
	}//fin du for

	cout << endl;

}

Conclusion :


Dans la version 1 le programme recherche directement la postition de l'entier testé par rapport aux autres et l'écrit dans un tableau.

Dans la version 2 le programme teste les int un par un a tous les autres un par un étalement et si le int testé est suppérieur au second int testé on inverse les 2 int dans le tableau de façon a avoir le plus petit int en premier.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.