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.
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.