Tableau en C

Fermé
flolarajasse Messages postés 103 Date d'inscription jeudi 12 novembre 2009 Statut Membre Dernière intervention 23 juin 2011 - 19 avril 2010 à 10:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 avril 2010 à 14:43
Bonjour,
Je voulais savoir comment je pouvais trouver la plus petite valeur d'un tableau en C sans être obligé de le trier ?
Merci d'avance



2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
19 avril 2010 à 10:49
Bonjour,

Soit min la variable qui contient le plus petit élément.
Tu l'initialises avec la première valeur du tableau.
Tu parcours tous les éléments du tableau avec une boucle for et dès que l'élément en cours est plus petit que min, tu le sauvegardes dans min (simple if). Ainsi min contiendra à chaque itération la plus petite valeur.

A la fin de la boucle for, tu es assuré d'avoir la plus petite valeur.

Cdlt,
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
19 avril 2010 à 11:19
ce qui donne :
const unsigned int N=...;
T tab[N];
rempli(tab);//fonction de remplissage
unsigned long int m=tab[0];
T* t;
for(t=tab+1;t+1!=tab+N;t++)m>*t?m=*t:1;
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
19 avril 2010 à 13:21
C'est interdit en C-Ansi de mettre une variable ou constante pour définir la taille d'un tableau.
Il vaut mieux passer par un bon vieux #define.
0
flolarajasse Messages postés 103 Date d'inscription jeudi 12 novembre 2009 Statut Membre Dernière intervention 23 juin 2011 14
19 avril 2010 à 14:02
En effet c'est interdit .
Le soucis c'est que j'avais fait un bout de programme pour récupérer la plus grande valeur, mais pour la plus petite je ne vois pas ce qu'il faut changer à ce programme...
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
19 avril 2010 à 14:17
en général "<" par ">".
Pour le tableau, c'est accepté en C99, donc standard.
0
flolarajasse Messages postés 103 Date d'inscription jeudi 12 novembre 2009 Statut Membre Dernière intervention 23 juin 2011 14
19 avril 2010 à 14:27
ne t'inquiètes j'ai essayé mais sa ne marche pas ; voici le code que j'avais :

for (i = 0 ; i < 6 ; i ++)
{
printf(usb_cdc_putc, "%lu \n\r", tableau[i]);
if (greatest < tableau[i])
{
greatest = tableau[i];
}
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 842
19 avril 2010 à 14:43
A Char Snipeur,
Oui c'est en effet accepté par C99, mais rare sont les compilateurs (d'ailleurs j'en connais pas) qui respectent entièrement la norme C99. Donc autant rester si possible en ANSI pour augmenter la portabilité.
Mais t'as raison de préciser que c'est possible, tout comme plein d'autres joyeusetés.
0