Posez votre question Signaler

Max,min en c

zakisas 1Messages postés 13 novembre 2005Date d'inscription - Dernière réponse le 23 août 2006 à 20:32
svp quelle est la fonction qui donne le max et min en languge c
Lire la suite 

Max,min en c »

4 réponses
Réponse
+7
moins plus
si tu veux, tu as aussi :

max(a,b) = (a + b + |a-b| ) / 2
min(a,b) = (a + b - |a-b| ) / 2


mais sinon il faut que tu te fasses un #define (je crois)
Ajouter un commentaire
Réponse
+1
moins plus
Et bien si tu utilises la stl c'est upper_bound et lower_bound.

http://www.sgi.com/tech/stl/upper_bound.html
http://www.sgi.com/tech/stl/lower_bound.html

Seul pb c'est plus du c++ que du c. En c++ tu as aussi les classes set et multiset qui sont bien pratiques.

Pour du c pur, il faut réecrire la fonction, ce qui est quand même assez trivial :

int min(int *tab,unsigned int taille){
  unsigned int i;
  int min=tab[0];
  for(i=1;i<taille;++i){
     if (tab[i]<min){
        min=tab[i];
     }
  }
  return min;
}


Bonne chance
Ajouter un commentaire
Réponse
-1
moins plus
Tu peux le faire avec un #define mais pas obligatoirement. La syntaxe change, et dans la version #define, c'est changé par le précompilateur à chaque occurence de min et de max trouvé. Ca ressemble un peu au inline du c++ (comprendre par là que les fonction de ce type doivent être de taille raisonnable).

Bonne chance
ubu - 23 août 2006 à 20:32
La norme C99 défini les fonctions fmin et fmax qui retournent le minimum et le maximum de 2 doubles en entrée.
Pour un tableau, la meilleure méthode est encore la première solution donnée.
On peut envisager de faire un tri (qsort de la stdlib) mais c'est un peu lourd surtout si le tableau est gros.
Ajouter un commentaire
Ce document intitulé « max,min en c » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook