Bonsoir,

Quand je compile je n'ai pas d'erreur, seulement quand le programme s'execute il plante très rapidement, surement avant d'arriver dans le programme de tri. Je ne trouve pas l'erreur...

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <stdio.h>
#include <stdlib.h>
#define SOMME_MAX 10
 
void tri_maximum (float * tab, size_t size, int order);
 
int main(void)
{
    float c1,c2,resultat;
    int i,j;
    int lim=SOMME_MAX*100;
    int o = 0;
    int k = 0;
    float *t = malloc((SOMME_MAX*SOMME_MAX)*sizeof *t);
    FILE* data=fopen("resultats.txt","w");
    FILE* tri=fopen("tri.txt","w");
 
    printf("\nValeur de la cote 1 :");
    scanf("%f",&c1);
 
    printf("\nValeur de la cote 2 :");
    scanf("%f",&c2);
 
 
 
    for ( i=1 ; i<=lim ; i++)
        {
              for ( j=1 ; j<=lim ; j++ )
                  {
                        resultat=( i*0.01*(c1-3)+j*0.01*(c2-3) );
 
                        if ( (resultat>0)&&(((i!=0)||(j!=0))&&((i!=0)&&(j!=0))) )
                           {
                                       fprintf(data,"\n| m1=%f | m2=%f | gain.E1=%f | gain.E2=%f | gain.E=%f |", (0.01*i), (0.01*j), ((0.01*i)*(c1-2)-(0.01*j)), ((0.01*j)*(c2-2)-(0.01*i)), ( ((0.01*i)*(c1-2)-(0.01*j))+((0.01*j)*(c2-2)-(0.01*i)) ));
 
                                       t[k]=( ((0.01*i)*(c1-2)-(0.01*j))+((0.01*j)*(c2-2)-(0.01*i)) );
                                       k++;
                           }
                   }
        }
 
 
 
   getchar();
 
 
   tri_maximum (t, k, 1);
 
   for (o = 0; o < k; o++)
   {
      printf("\n%f", t[o]);
      fprintf (tri,"\n%f", t[o]);
 
   }    
 
    fclose(data);
    fclose(tri);
 
}
 
void tri_maximum (float * tab, size_t size, int order)
{
   size_t i = 0;
   size_t j = 0;
 
 
   if (tab != NULL && size > 1)
   {
      /* Parcours du tableau. */
      for (i = size - 1; i > 0; i--)
      {
         /* Recherche du maximum. */
         size_t max = i;
         for (j = 0; j <= i; j++)
         {
            if (order == 0)
            {
               if (tab[j] > tab[max])
               {
                  max = j;
               }
            }
            else
            {
               if (tab[j] < tab[max])
               {
                  max = j;
               }
            }
         }
 
         /* Echange des valeurs du tableau. */
         {
            float tmp = tab[i];
            tab[i] = tab[max];
            tab[max] = tmp;
         }
      }
   }
}
Si vous avez une meilleur idée que rien comme moi, je suis preneur !
Merci d'avance