Langage C, classement ordre croissant-decroi.
Résolu/Fermé
keurdange
Messages postés
720
Date d'inscription
lundi 8 novembre 2010
Statut
Membre
Dernière intervention
13 juillet 2016
-
3 mai 2011 à 18:13
keurdange Messages postés 720 Date d'inscription lundi 8 novembre 2010 Statut Membre Dernière intervention 13 juillet 2016 - 28 déc. 2011 à 14:33
keurdange Messages postés 720 Date d'inscription lundi 8 novembre 2010 Statut Membre Dernière intervention 13 juillet 2016 - 28 déc. 2011 à 14:33
A voir également:
- Trier un tableau par ordre croissant c
- Excel trier par ordre croissant chiffre - Guide
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Triez cette liste par ordre alphabétique des villes et par note de la meilleure à la moins bonne. quel mot est formé par les 8 premières lettres de la colonne code ? ✓ - Forum Excel
1 réponse
Hxyp
Messages postés
401
Date d'inscription
vendredi 28 janvier 2011
Statut
Membre
Dernière intervention
27 avril 2014
54
Modifié par Hxyp le 3/05/2011 à 21:24
Modifié par Hxyp le 3/05/2011 à 21:24
Bonjour,
Au plus simple, on a un tableau avec 5 notes : 1 5 3 4 2
on vérifie par paire en se décalant. Et si supérieur ou inférieur on échange les valeurs pour mettre dans l'ordre voulu au final.
En croissant si le nombre précédent est supérieur on échange sinon on ne fait rien.
En admetant qu'on commence à i=1 dans la boucle pour i<n
(if tab[i-1]>tab[i])
1 5 3 4 2 , (1>5) on ne change rien
1 5 3 4 2 , (5>3) on change
1 3 5 4 2 , (5>4) on change
1 3 4 5 2 , (5>2) on change
1 3 4 2 5
on boucle dessus autant de fois qu'il y a de valeurs dans le tableau, donc une seconde boucle pour répéter celle-ci. ça doit faire n*n en tout, mais pas sûr ahaha
Pour échanger vous pouvez utiliser une variable qui ne sert qu'à garder un instant la valeur :
int a=5, b=2, temp;
temp=a;
a=b;
b=temp;
Au plus simple, on a un tableau avec 5 notes : 1 5 3 4 2
on vérifie par paire en se décalant. Et si supérieur ou inférieur on échange les valeurs pour mettre dans l'ordre voulu au final.
En croissant si le nombre précédent est supérieur on échange sinon on ne fait rien.
En admetant qu'on commence à i=1 dans la boucle pour i<n
(if tab[i-1]>tab[i])
1 5 3 4 2 , (1>5) on ne change rien
1 5 3 4 2 , (5>3) on change
1 3 5 4 2 , (5>4) on change
1 3 4 5 2 , (5>2) on change
1 3 4 2 5
on boucle dessus autant de fois qu'il y a de valeurs dans le tableau, donc une seconde boucle pour répéter celle-ci. ça doit faire n*n en tout, mais pas sûr ahaha
Pour échanger vous pouvez utiliser une variable qui ne sert qu'à garder un instant la valeur :
int a=5, b=2, temp;
temp=a;
a=b;
b=temp;
4 mai 2011 à 01:11
a=a+b (cumule des valeurs dans b)
b=a-b=a+b-b=a (transfert de a dans b)
a=a-b=a+b-a=b (transfert de b dans a)
Mais imagine si tu as 20,40 ou 100 notes, ca serait vraiment long avec tout le risque de faire des erreurs
4 mai 2011 à 01:32
#include<stdio.h>
int tab[5];
int note,a,b,c,x,max,min,g;
float moy;
main()
{
for(a=0;a<=4;a++)
{
printf("Entrez les notes: ");
scanf("%d", &tab[a]);
}
max=tab[0];
for(a=1;a<=4;a++)
{
if(max<tab[a])
max=tab[a];
}
min=tab[0];
for(a=1;a<=4;a++)
{
if(min>tab[a])
min=tab[a];
}
for(a=0;a<=4;a++)
{
moy=(moy+tab[a]);
}
moy=moy/5;
printf("La moyenne est %.2f, le minimum %d et le maximum %d\n", moy,min,max);
for(b=1;b<5;b++)
{
x=tab[b];
c=b-1;
while(c>=0&&tab[c]>x)
{
tab[c+1]=tab[c];
c=c-1;
tab[c+1]=x;
}
}
for(g=0;g<5;g++)
printf("%d\n", tab[g]);
}