cours/content/conception_formelle/99-DM_framac/code/max_dist.c

27 lines
737 B
C

#include "max_dist.h"
int max_dist(int *tab, unsigned int n)
{
int min = tab[0];
int max = tab[0];
unsigned int i = 1;
/*@
loop assigns i, max, min;
loop invariant I1: \at(i, LoopEntry) <= i <= n;
loop invariant I2: min <= max;
loop invariant I3: \forall integer j; (\at(i, LoopEntry) <= j < i ==> max >= tab[j] >= min);
loop invariant I4: \exists integer j; ( 0 < j < i ==> max == tab[j]);
loop invariant I5: \exists integer j; ( 0 < j < i ==> min == tab[j]);
loop variant n - i;
*/
while (i < n)
{
if (tab[i] < min)
min = tab[i];
if (tab[i] > max)
max = tab[i];
i++;
}
return max - min;
}