Problème return int

Fermé
emmy_2019 Messages postés 59 Date d'inscription mardi 23 avril 2019 Statut Membre Dernière intervention 16 septembre 2019 - 28 mai 2019 à 09:16
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 28 mai 2019 à 10:26
Bonjour,
 int  TAHITIZONES  checkInsideZones(double x, double y)
{
	int i,j;
	//Point p = {-17.625962, -149.601541};
	Point p;
	int count_CT, count_Zone;
	int id;
	Zone *zone=(Zone*)malloc(30*sizeof( Zone));
	p.x=x;
	//printf("x = %f\n", p.x);
	p.y=y;
	//printf("y = %f\n", p.y);
	count_Zone= Count_Zone();
	//printf("count_Zone = %d\n", count_Zone);
	//count_CT = Count_Polygone();
	zone = BillZones(zone);
	//printf("BillZones\n");

    for(i=1; i <= Count_Zone; i++)
    {
		if(checkInside(zone[i].CT, zone[i].Num_Polygon, p))
        {
            id= zone[i].id;
           printf("id =%d\n", id);
		   free(zone);
            return id;
        }
    }

	return EXIT_SUCCESS;


}

J'ai un soucis dans
 return EXIT_SUCCESS; 
. Mon application se plante si
checkInside(zone[i].CT, zone[i].Num_Polygon, p)==FALSE
.
En effet, mon code va traiter si le point dans la zone rentre dans la boucle for , sinon il va retourner un 0 alors quand le point est dehors zone , l'application se plante fatal error.

Avez-vous une idée svp? Est ce que mon code est correcte ou il faut le modifier?

Merci par avance



Configuration: Windows / Chrome 74.0.3729.169

1 réponse

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 28 mai 2019 à 10:26
Bonjour,

Si je ne dis pas de bêtise, en C, les indices du tableau vont de 0 à N-1 (avec N le nombre d'éléments du tableau)
À mon avis l'erreur vient de la dernière itération de la boucle, quand i == Count_Zone.

Remplace
for(i=1; i <= Count_Zone; i++)
par
for(i=0; i < Count_Zone; i++)
, et ça devrait aller mieux.

Xavier
0