Bonjour,
Tout d'abord, il te manque une condition très importante dans ta boucle while qui te permettrait de définir le minimum
- Code: Tout sélectionner
while(val>=0)
{
min=val;
printf("donner un entier positif pour continuer ou negatif pour finir\n");
scanf("%d",&val);
}
Dans cette boucle, tu associes le minimum (variable min) à la valeur saisie par l'utilisateur, pour tous les cas où val > 0.
Or ce que tu cherches c'est plutôt pour chaque valeur saisie, il faut que je vérifie si la valeur est supérieur au minimum actuel et je la remplace sinon je passe mon chemin.
- Code: Tout sélectionner
if (min > val) {
min = val;
}
Ensuite (même si le code n'est pas en C mais en C++) le code Cliffe contient 2 astuces.
* L'utilisation de la boucle "do while" te permet d'effectuer la boucle AU MOINS UNE FOIS.
- Code: Tout sélectionner
do {
if (min = 0);
* L'initialisation de min avec une très grande valeur
Si tu mets min = 0 au début forcément tu vas avoir quelques problèmes pour la suite.
Tu as donc 2 techniques possibles :
1) Initialiser min avec une valeur négative (-1) par exemple et rajouter une condition pour traiter le cas.
- Code: Tout sélectionner
/* Si min vaut -1 ou si min est plus grand que val, alors on remplace */
if (min == -1 || min > val) {
min = val;
}
ou alors initialiser min avec une valeur max.
- Code: Tout sélectionner
int min = 100000;
Il est toutefois préférable de passer par
- Code: Tout sélectionner
#include /* Nécessaire pour INT_MAX */
int min=INT_MAX; /* valeur maximum que peut prendre un int */
Je n'ai bien sûr par écrit tout le code. Essaye de modifier ce qui ne va pas à partir de ce qu'on a pu te dire.