Gestion d'une liste

Bonjour à tous,

Je bloque sur la gestion d'une liste, j'aimerais savoir comment je dois m'y prendre.
J'ai un tableau de 42 point numérotés de 1 à 42.
J'aimerais parcourir chaque point dans cet ordre : 1,2,42,41,3,4,40,39,5,6,38,37,7,8,36,35,9,10,34,33,11,12,32,31,13,14,30,29 etc puis repartir au point 1 ... une boucle en soit

Comment puis je m'y prendre ? Sachant que j'aimerais que le code s'adapte a la longueur de chaque liste

Merci

Bonjour @proteca

Comme tu le découvriras en consultant les 'règles simples à consulter avant de poster' , les demandes d'aide sont à déposer dans la partie principale du forum francophone, pas dans la partie exclusivement dédiée au dépôt et à la consultations des tutoriels.

Je déplace donc ta demande à l'endroit approprié

Les points c’est quoi ?

Il suffit de remplir le tableau dans l’ordre de parcours souhaité. Je ne vois pas trop le souci

Une boucle for peut avoir plusieurs arguments pour chacun des champs.
Par exemple:

for( int var1=valeur_de_départ1 , int var2=valeur_de_départ2 ; condition de fin ; var1+= incrément1 , var2-=incrément2 )

Ne pas oublier qu'en C l'indice des tableaux démarre de 0 et non de 1.

imaginons qu'un point ait des coordonnées x et y et un ordre de visite

on peut décrire cela dans une structure

struct Point {
    size_t indiceVisite;
    int x;
    int y;
};

ensuite vous n'avez qu'à initialiser un tableau de Point

Point tableauPoints[] = {
  {1, 10, 20},
  {2, 15, 25},
  {42, 30, 40},
  {41, 35, 45},
  {3, 50, 60},
  {4, 55, 65},
  {40, 70, 80},
  {39, 75, 85},
  {5, 90, 100},
  {6, 95, 105},
  {38, 110, 120},
  {37, 115, 125},
  {7, 130, 140},
  {8, 135, 145},
  {36, 150, 160},
  {35, 155, 165},
  {9, 170, 180},
  {10, 175, 185},
  {34, 190, 200},
  {33, 195, 205},
  {11, 210, 220},
  {12, 215, 225},
  {32, 230, 240},
  {31, 235, 245},
  {13, 250, 260},
  {14, 255, 265},
  {30, 270, 280},
  {29, 275, 285}
        // les 42 points
};

const size_t tailleTableau = sizeof tableauPoints / sizeof *tableauPoints;  // ce sera ➜ 42

ensuite le parcours s'effectue simplement dans l'ordre du tableau, de 0 à 41

for (size_t i = 0; i < tailleTableau; ++i) {
   Serial.print("Indice de visite : ");
   Serial.print(tableauPoints[i].indiceVisite);
   Serial.print(", x : ");
   Serial.print(tableauPoints[i].x);
   Serial.print(", y : ");
   Serial.println(tableauPoints[i].y);
}

Oui c'est exactement ce que je veux faire, mais avec un tableau beaucoup plus grand.
Je possède déjà les valeurs, est-ce possible d'obtenir le même résultat mais avec un tableau sous ce format :

Point tableauPoints[] = {
{1, 10, 20},
{2, 15, 25},
{3, 50, 60},
{4, 55, 65},
{5, 90, 100},
{6, 95, 105},
{7, 130, 140},
{8, 135, 145},
{9, 170, 180},
{etc}
};

Le premier élément de votre tableau ne sert à rien s’il correspond à l’indice dans le tableau. Et pour faire le parcours dans le sens que vous avez donné il vous faudra avoir un autre tableau qui liste les indices dans l’ordre de parcours.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.