Jte défi de remplir un tableau!

Jte défi de remplir un tableau! - C++ - Programmation

Marsh Posté le 08-01-2005 à 12:17:11    

Voila tit défi, comment faire pour remplir un tableau pour qu il ait ce contenu :
 
Pour un tableau de 3x3:
 
1 2 3
8 0 4
7 6 5
 
Pour un tableau de 4x4 :
 1  2  3  4
12 13 14  5
11  0 15  6
10  9  8  7
 
Dernier exemple pour ceux qui aurait pas encore compris :)
Tableau de 5x5:
 
  1  2  3  4  5
 16 17 18 19  6
 15 24  0 20  7
 14 23 22 21  8
 13 12 11 10  9
 
Voila le défi : remplir un tableau ressemblant a une spirale :D

Reply

Marsh Posté le 08-01-2005 à 12:17:11   

Reply

Marsh Posté le 08-01-2005 à 12:34:52    

jvois pas ce qu'il y a de compliqué dans ton truc inutile :heink:
C'est juste de la bonne manipulation de tableau et d'indice :)
...juste bon pour une introduction à l'algorithmie :o

Reply

Marsh Posté le 08-01-2005 à 12:58:33    

Même défi, mais en meta programmation pour ceux qui suivent ;-)


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 08-01-2005 à 12:59:44    

kler, pas grand intéret et pas tres compliqué ....
 
dis de suite si c'est un jeu ou si t'en as besoin .... (je vais pas réfléchir 5 minutes pour rien du tout)
 
 

Reply

Marsh Posté le 08-01-2005 à 13:18:35    

boah un defi est tjrs stupide de base ><

Reply

Marsh Posté le 08-01-2005 à 13:22:59    

Ce serait pas un exercice, par hasard? [:itm]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-01-2005 à 13:29:51    

OU2 bon on oublie jai reussi tout est bien qui finit bien \o/
 
bonnejournée a tous ;)

Reply

Marsh Posté le 08-01-2005 à 21:37:43    

bonyama a écrit :

OU2 bon on oublie jai reussi tout est bien qui finit bien \o/
 
bonnejournée a tous ;)


 
 
C'etait donc bien un exo... [:greenleaf]

Reply

Marsh Posté le 08-01-2005 à 22:23:41    

xterminhate a écrit :

Même défi, mais en meta programmation pour ceux qui suivent ;-)


 
 
voila un essai :
 

Code :
  1. template<bool cond, typename true_part, typename false_part>
  2. struct IF
  3. {
  4. typedef true_part type;
  5. };
  6. template<typename true_part, typename false_part>
  7. struct IF<false, true_part, false_part>
  8. {
  9. typedef false_part type;
  10. };
  11. template<size_t x, size_t y, size_t to_add>
  12. struct remplir_dernier
  13. {
  14. template<size_t X>
  15. static void exec(int tab[X][X])
  16. {
  17.  tab[to_add+x][to_add+y] = 0;
  18. }
  19. };
  20. template<size_t taille, size_t pos_x, size_t compteur, size_t to_add>
  21. struct remplir_haut
  22. {
  23. template<size_t X>
  24. static void exec(int tab[X][X])
  25. {
  26.  tab[to_add+pos_x][to_add] = compteur;
  27.  IF<pos_x == taille-1,
  28.   remplir_droite<taille, 1, compteur+1, to_add>,
  29.   remplir_haut<taille, pos_x+1, compteur+1, to_add>
  30.  >::type::exec<X>(tab);
  31. }
  32. };
  33. template<size_t taille, size_t pos_y, size_t compteur, size_t to_add>
  34. struct remplir_droite
  35. {
  36. template<size_t X>
  37. static void exec(int tab[X][X])
  38. {
  39.  tab[to_add+taille-1][to_add+pos_y] = compteur;
  40.  IF<pos_y == taille-1,
  41.   remplir_bas<taille, taille-2, compteur+1, to_add>,
  42.   remplir_droite<taille, pos_y+1, compteur+1, to_add>
  43.  >::type::exec<X>(tab);
  44. }
  45. };
  46. template<size_t taille, size_t pos_x, size_t compteur, size_t to_add>
  47. struct remplir_bas
  48. {
  49. template<size_t X>
  50. static void exec(int tab[X][X])
  51. {
  52.  tab[to_add+pos_x][to_add+taille-1] = compteur;
  53.  IF<pos_x == 0,
  54.   IF<taille == 2,
  55.    remplir_dernier<0, 1, to_add>,
  56.    remplir_gauche<taille, taille-2, compteur+1, to_add>
  57.   >::type,
  58.   remplir_bas<taille, pos_x-1, compteur+1, to_add>
  59.  >::type::exec<X>(tab);
  60. }
  61. };
  62. template<size_t taille, size_t pos_y, size_t compteur, size_t to_add>
  63. struct remplir_gauche
  64. {
  65. template<size_t X>
  66. static void exec(int tab[X][X])
  67. {
  68.  tab[to_add][to_add+pos_y] = compteur;
  69.  IF<pos_y == 1,
  70.   IF<taille == 3,
  71.    remplir_dernier<to_add+1, 0, 0>,
  72.    remplir_haut<taille-2, 0, compteur+1, to_add+1>
  73.   >::type,
  74.   remplir_gauche<taille, pos_y-1, compteur+1, to_add>
  75.  >::type::exec<X>(tab);
  76. }
  77. };
  78. #include <iostream>
  79. #include <iomanip>
  80. const size_t tab_taille = 5;
  81. int tab[tab_taille][tab_taille];
  82. int main()
  83. {
  84. remplir_haut<tab_taille, 0, 1, 0>::exec<tab_taille>(tab);
  85. //std::cout.fill('0');
  86. for(size_t i = 0; i<tab_taille; i++)
  87. {
  88.  for(size_t j=0; j<tab_taille; j++)
  89.   std::cout << std::setw(2) << std::right << tab[j][i] << ' ';
  90.  std::cout << '\n';
  91. }
  92. std::cin.ignore();
  93. }


---------------
-( BlackGoddess )-
Reply

Sujets relatifs:

Leave a Replay

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