Tri de nombre en C

Bonjour z"a tous ^^

Alors voilà, je suis en train de créer une source me permettant de trier des nombres entrés par l’user par ordre croissant.

ma source pour le moment est :


#include <stdio.h>
main ()
{

    int i = 0, k, j, input, input2, input3 , MIN = 0, MAX, MIDDLE;
    printf("Entrez une valeure 1\n");
    scanf("%d", &input);
    printf("Entrez une valeure 2\n");
    scanf("%d", &input2);
    printf("Entrez une valeure 3\n");
    scanf("%d", &input3);

    while (i < MIN) {
            MIN++;
            if (i != input || i != input2 || i != input3)
            i++;
}
MIDDLE = MIN;
    printf("MIN = %d", MIN);
    while (i < MIDDLE) {
            MIDDLE++;
            if (i != input || i != input2 || i != input3)
            i++;
    }
 printf("Middle = %d", MIDDLE);
 MAX = MIDDLE;
   while (i < MAX) {
            MAX++;
            if (i != input || i != input2 || i != input3)
            i++;
   }
      printf("MAX = %d", MAX);





    printf("we're the best");
}

Bien sur le lvl est débutant … et le resultat s’en ressent : MIN, MIDDLE et MAX me retourne 0 …

j’arrive pas à comprendre POURQUOI !!

Une ame généreuse pourrait elle éclairer ma lanterne ? hum …

merci d’avance m’sieurs dames =)

Pour commencer, c’est valeur. Pas de « e ».

Pour le reste, je ne sais pas ce que tu fais, mais ce n’est clairement pas du tri.

Parce que j’ai la flemme, un algo de tri en n².

int main(void) {
	int input[3] = {0,0,0};
	for (int i = 0; i  < sizeof(input)/sizeof(int);++i) {
		printf("Valeur %d : ", i);
		if (1 != scanf("%d", &input[i]))) {
   			return EXIT_FAILURE;
		}
	}

	for (int i = 0; i < sizeof(input)/sizeof(int); ++i) {
		int min = input[i], minIndex = i;
		for (int j = i+1; j < sizeof(input)/sizeof(int); ++j) {
			if (input[j] < min) {
				min = input[j];
				minIndex = j;
			}
		}
		input[minIndex] = input[i];
		input[i] = min;
	}

	for (int i = 0; i  < sizeof(input)/sizeof(int);++i) {
		printf("Valeur %d : %d\n", i, input[i]);
	}
	return EXIT_SUCCESS;
}

Inutile de dire que je n’ai pas testé (donc mon tri peut être bon comme il peut ne pas l’être, au choix :D)

Je croi que tu t’y prend un peu mal pour faire quelque chose comme ca. Tu devrais pas avoir à faire 3 boucles pour trouvé l’ordre de 3 nombres. Il existe des algos tres facile à appliqué de tri de nombre.

Aussi, là norme veux que les majuscule pour les « variable » soit utilise pour les constant (ie #define MAX), et donc ne peuvent etre modifier durant l’execusion du programme.

Dans ton cas, tu init MIN et i à 0, apres tu fait un while( i < MIN ), ce qui est faux car i == MIN, donc ca va dans aucune des boucles, donc 0 partout :slight_smile:

Pour le code de tri voir : en.wikipedia.org…

edit : grilled :smiley:
Edité le 31/10/2009 à 00:12