Tableau en C

flolarajasse Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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



A voir également:

2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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   Statut Contributeur Dernière intervention   1 299
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   14
 
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   Statut Contributeur Dernière intervention   1 299
 
en général "<" par ">".
Pour le tableau, c'est accepté en C99, donc standard.
0
flolarajasse Messages postés 103 Date d'inscription   Statut Membre Dernière intervention   14
 
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   Statut Contributeur Dernière intervention   1 846
 
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