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