1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
void fonction (long int n, job *copie1, long int sum,FILE *fichier)
{
long int i,k,j,nbre,max,ind;
long int *choix=NULL;
k=n-1;
while (k>=0)
{
nbre=0;
choix= malloc (nbre *sizeof (long int));
j=0;
for (i=0;i<n;i++)
{
if (copie1[i].d>=sum)
{
nbre++;
choix= realloc(choix, sizeof(long int) *nbre);
if (choix==NULL)
{
printf (" choix Code de l'erreur : %d\n", errno);
perror("Erreur");
}
else
{
choix[j]=i+1;
j++;
}
}
}
if (nbre==0)
{
pile=NULL;
return;
}
else
{
max = choix[0]-1;
for (i=0;i<nbre;i++)
{
ind=choix[i]-1;
if ( copie1[ind].p>copie1[max].p)
{
max= ind;
}
}
pile[k]= max+1;
sum=sum-copie1[max].p;
copie1[max].d=-1;
k--;
free (choix);
choix=NULL;
}
} |
Partager