[résolu] Modification valeur tableau bidimentionnel

Modification valeur tableau bidimentionnel [résolu] - C - Programmation

Marsh Posté le 03-06-2015 à 13:37:52    

Bonjour a tous, petit soucis assez banal je présume mais étant débutant (Arduino) je n'en trouve pas la solution !!!
 
 dans l'idée, je déclare un nouveau tableau 2D que j'initialise de la façon suivante :

Code :
  1. int table[8][8]={
  2.                   {0,1,2,3,4,5,6,7},
  3.                   {8,9,10,11,12,13,14,15},
  4.                   {16,17,18,19,20,21,22,23},
  5.                   {24,25,26,27,28,29,30,31},
  6.                   {32,33,34,35,36,37,38,39},
  7.                   {40,41,42,43,44,45,46,47},
  8.                   {48,49,50,51,52,53,54,55},
  9.                   {56,57,58,59,60,61,62,63}
  10.                  };


mon soucis c'est que j'aimerais trouver une façon aussi simple a écrire mais pouvoir changer les valeurs plus tard dans le programme.
 
si je tape :

Code :
  1. table[][] = {
  2.               {9,8,7,6 .....},
  3.               {.............},
  4.               {.............},
  5.               {.............},
  6.              };


cela ne fonctionne pas !
 
pourriez vous S.V.P. m'indiquer une façon aussi simple de modifier manuellement toutes les valeurs du tableau sans utiliser de boucle.
(les nouvelles valeurs a affecter sont complètement aléatoires et n'ont aucunes logique mathématique, c'est moi qui décide des nombre a rentrer ....)
 
Merci d'avance, bonne journée !


Message édité par lolodu95120 le 04-06-2015 à 13:05:49

---------------
Laurent M.
Reply

Marsh Posté le 03-06-2015 à 13:37:52   

Reply

Marsh Posté le 03-06-2015 à 13:49:50    

C'est pas du C++ ça, juste du C.
 
Déjà ta syntaxe pour déclarer le tableau n'est pas bonne. Ton compilateur devrait t'avertir, sinon il est mal réglé!
 

Code :
  1. int table[3][3] = { {0,1,2}, {3,4,5}, {6,7,8} };


Trop fainéant pour faire un 8x8 mais c'est le même principe, tu peux rajouter des sauts de ligne.
 
Pour le problème en soi tu peux mettre tes nouvelles valeurs dans un autre tableau puis le copier dans ton premier (table) avec memcpy.

Code :
  1. #include <string.h>
  2. int table[3][3] = { {0,1,2}, {3,4,5}, {6,7,8} };
  3. int table2[3][3] = { {42,43,7}, {3,4,5}, {6,7,8} };
  4. memcpy(table, table2, sizeof(table));

Reply

Marsh Posté le 03-06-2015 à 14:32:33    


Ok merci pour les infos....

 

mais si je doit changer 20 fois les valeurs de mon tableau je doit donc faire 20 tableaux différents ?

 

Le but étant, le tableau prend certaines valeurs, je les utilises.... puis je modifie les valeurs et les réutilises ! ainsi de suite....

 

sachant que mon tableau est utilisé en paramètre envoyé dans une fonction, j'ai donc besoin que ce soit le même tableau qui change de valeurs.

 

Merci par avance de vous pencher sur mon soucis.


Message édité par lolodu95120 le 03-06-2015 à 14:43:43
Reply

Marsh Posté le 03-06-2015 à 15:52:52    

Ben tu modifies l'élément table[i][j] en lui assignant une autre valeur, je vois pas ou est le pb.
 
A+,
 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-06-2015 à 16:31:59    

Oui, j'en suis arrivé à la même conclusion, mais je ne trouve pas cette méthode très pratique ni esthétique.
 
Ceci dit je ne penses pas avoir d'autres solution que du faire :

Code :
  1. table[0][0]= 0 ;table[0][1]= 0 ;table[0][2]= 0 ;table[0][3]= 0 ;table[0][4]= 0 ;table[0][5]= 0 ;table[0][6]= 0 ;table[0][7]= 0 ; 
  2. table[1][0]= 0 ;table[1][1]= 0 ;table[1][2]= 0 ;table[1][3]= 0 ;table[1][4]= 0 ;table[1][5]= 0 ;table[1][6]= 0 ;table[1][7]= 0 ;
  3. table[2][0]= 0 ;table[2][1]= 0 ;table[2][2]= 0 ;table[2][3]= 0 ;table[2][4]= 0 ;table[2][5]= 0 ;table[2][6]= 0 ;table[2][7]= 0 ;
  4. table[3][0]= 0 ;table[3][1]= 0 ;table[3][2]= 0 ;table[3][3]= 0 ;table[3][4]= 0 ;table[3][5]= 0 ;table[3][6]= 0 ;table[3][7]= 0 ;
  5. table[4][0]= 0 ;table[4][1]= 0 ;table[4][2]= 0 ;table[4][3]= 0 ;table[4][4]= 0 ;table[4][5]= 0 ;table[4][6]= 0 ;table[4][7]= 0 ;
  6. table[5][0]= 0 ;table[5][1]= 0 ;table[5][2]= 0 ;table[5][3]= 0 ;table[5][4]= 0 ;table[5][5]= 0 ;table[5][6]= 0 ;table[5][7]= 0 ;
  7. table[6][0]= 0 ;table[6][1]= 0 ;table[6][2]= 0 ;table[6][3]= 0 ;table[6][4]= 0 ;table[6][5]= 0 ;table[6][6]= 0 ;table[6][7]= 0 ;
  8. table[7][0]= 0 ;table[7][1]= 0 ;table[7][2]= 0 ;table[7][3]= 0 ;table[7][4]= 0 ;table[7][5]= 0 ;table[7][6]= 0 ;table[7][7]= 0 ;


 
Sachant que chaque valeurs peut être comprise entre 0 et 255, je ne peut donc pas utiliser de boucle ...


Message édité par lolodu95120 le 03-06-2015 à 16:47:13

---------------
Laurent M.
Reply

Marsh Posté le 03-06-2015 à 16:51:54    

Bonjour, je pense que tu dois d'abord saisir i et j pour modifier la case [i, J] et saisir en suite la valeur de la case.
Si tu veux faire l'inverse il te faut un buffer temporaire.


---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Marsh Posté le 03-06-2015 à 17:04:36    

Citation :

mais si je doit changer 20 fois les valeurs de mon tableau je doit donc faire 20 tableaux différents ?


Et alors? Faut bien stocker les nombres quelque part, que tu fasses 20 tableaux ou 20x8x8 assignations ça ne changera pas grand chose (sauf au niveau lisibilité!). Par contre si il n'y a que quelque valeurs qui changent à chaque modification là c'est autre chose.
 

Citation :


sachant que mon tableau est utilisé en paramètre envoyé dans une fonction, j'ai donc besoin que ce soit le même tableau qui change de valeurs.


Selon le code tu peux aussi appeller ta fonction avec un autre tableau en paramètre.

Reply

Marsh Posté le 03-06-2015 à 19:15:16    

Par contre, s'il veut tout remettre d'un coup a zero dans son tableau, avant de modifier juste certaines valeurs, il peut faire:
memset(&table[0], 0, sizeof(table));
 
A+,


Message édité par gilou le 03-06-2015 à 19:19:34

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-06-2015 à 13:02:30    

Merci a tous pour vos propositions c'est sympas, je pense que je vais passer les différents tableaux créés en paramètre de fonction.
 
Si jamais vous avez d'autres possibilités n’hésitez pas a les proposer ça pourras toujours servir a quelqu'un.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed