dans mon TP, je dois écrire un programme qui permet d'entrer 3 nombres entiers au clavier, puis les afficher à l'écran dans l'ordre croissant.
Voici ce que j'ai fais :
int main(int argc, char* argv[])
{
int a; int b; int c;
printf("Merci de rentrer le premier chiffre");
scanf("%d",&a);
printf("Merci de rentrer le second chiffre");
scanf("%d",&b);
printf("Merci de rentrer le troisieme chiffre");
scanf("%d",&c);
if (a<b && b>c)
{
printf("Le chiffre le plus grand est B\n");
if (a>c)
{
printf("ordre croissant : %d %d %d",c,b,a);
}
}
else if (c<a && a>b)
{
printf("le chiffre le plus grand est A\n");
if (c>b)
{
printf("ordre croissant : %d %d %d",b,a,c);
}
}
else if (b<c && c>a)
{
printf("Le chiffre le plus grand est C\n");
}
getch();
return 0;
}
Pour afficher le chiffre le plus grand, aucun soucis.
Par contre je n'arrive pas à permettre à classer par ordre croissant les nombres entrés au clavier.
Indice : Il faut utiliser une variable intermédiaire.
do
{
if(a>b)
{
e=a;
a=b;
b=e;
}
else if(b>c)
{
e=b;
b=c;
c=e;
}
}while(!((a<b)&&(a<c)&&(b<c)));
printf("Les nombres sont maintenant dans l'ordre croissant : %d %d %d", a, b, c);
Cependant, tu remarqueras que ce programme peut être amélioré (pour un nombre différent de 3, il faut rajouter des conditions). Il faut utiliser des algorithmes de tris.
L'utilisation d'un tableau de plusieurs entiers est préférable pour le tri et l'affichage de nombreux nombres.
int a,b,c;
De plus, tu peux aussi écrire ta déclaration de variables comme ci-dessus.
- Ligne 14 à 20, tu es bien dans la où B est plus grand. Alors la liste croissante se termine par B, il y a 2 possibilités : A C B ou bien C A B. Il suffit de faire le bon test pour distinguer et choisir parmi ces 2 cas. - Idem lignes 25 à 30 pour A plus grand, et choix B C A ou C B A. - Idem lignes 35 pour C plus grand, et choix A B C ou B A C.
Attention : si 2 ou 3 nombres saisis sont égaux ta méthode ne va pas du tout fonctionner.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
En recherche d'emploi.