[c] Mais qu'est ce que je dois mettre?

Mais qu'est ce que je dois mettre? [c] - Programmation

Marsh Posté le 15-05-2001 à 20:06:09    

Je craque, alors finalement je demande un tit coup de main..
voila un tit morceau de mon programme. ça plante a tous les coups..
 
quand je lance cette fonction->
voila ce qu'il me met dans le tableau matrice_piece
607
708
809
 
alors que je voudrais  
607
000
809
 
Deuxième bug
Si vous regardez le programme, vous verrez que je posséde 2 variables WIDTH et HEIGHT. Celles ci représente la taille d'une fenêtre. Je souhaite partager cette fenêtre par blocs de 3*3 pixels (d'ou la matrice_piece). Comme d'habitude, g du me planter dans l'init, pasq je sais pas s'il faut que j'y mette...
-----------------------------------------------
#define HEIGHT 9
#define WIDTH 9
 
/*WIDTH et HEIGHT devront etre mis a 210*/
 
int widt=(WIDTH/3)-1;
int heig=(HEIGHT/3)-1;
int matrice_piece[widt][heig];
int trajetx=0;
int trajety=0;
 
void init(void){
  int i,j;
  /* pr initialiser le rand */
  srand(time(0));  
  /* intialise la matrice des numeros de pieces */
  for(i=0;i<=widt;i++)
    for(j=0;j<=heig;j++)
      matrice_piece[i][j]=0;
  /* pr initialiser les coins du tableau */
  matrice_piece[0][0]=6;
  matrice_piece[widt][0]=9;
  matrice_piece[0][heig]=7;
  matrice_piece[widt][heig]=8;
}


---------------
La vie c'est comme une boite de chocolat.
Reply

Marsh Posté le 15-05-2001 à 20:06:09   

Reply

Marsh Posté le 15-05-2001 à 20:38:58    

1.c'est pas bon, en c/c++ les tableaux commecent a 0 et se terminent en n-1
 
donc les for(i=0;i<=heigh;i++)
ca va planter, remplace <= par <
 
2.A l'allocation, tu ne peux pas mettre une variable, faut que ca soit une constante =>
int matrice_piece[(WIDTH/3)-1][(HEIGHT/3)-1];  
si tu as besoin de des constantes, faits 2 autres defines.
 
3.matrice_piece[widt][0] c'est pas bon non plus, tu va te chopper un core dump => widt-1
 
4. en c : matrice_piece [ligne][colonne]
ca t'explique ton probleme
 
matrice_piece[0][0]=6;  
matrice_piece[widt-1][heig-1]=9;  
matrice_piece[0][heig-1]=7;  
matrice_piece[widt-1][0]=8;

Reply

Marsh Posté le 15-05-2001 à 21:06:20    

pr le cout de la variable, je sais... ct pour expliquer...sinon le compilateur y va me faire :pt1cable:  
 
Euh, tu peux me donner une explication pour le fait qu'il me collait quand même les valeurs 7 et 9 aux bons endroits? Pasq en théorie, il fait un peu la gueule, mais sinon...
 
 :lol: la version que tu m'as sortie est la première version de mon programme... je peux te répondre qu'elle ne va pas marcher non plus.. je crois que je vais donner 2 baffes aux compil et basta!


---------------
La vie c'est comme une boite de chocolat.
Reply

Marsh Posté le 16-05-2001 à 09:42:36    

Euh... dsl de contredire mais... en c, comme partout je pense, un tableau a deux dimensions... ben, c toi ki decide de ki est la ligne et ki est la colonne...
Donc, tu peux tres bien avoir matrice[colonne][ligne]... :D:D
Enfin, je pense que jai du manquer un episode... :D:D

Reply

Marsh Posté le 16-05-2001 à 10:40:34    

wouatouwouatou a écrit a écrit :

Euh... dsl de contredire mais... en c, comme partout je pense, un tableau a deux dimensions... ben, c toi ki decide de ki est la ligne et ki est la colonne...
Donc, tu peux tres bien avoir matrice[colonne][ligne]... :D:D
Enfin, je pense que jai du manquer un episode... :D:D




On considere en general que les tableaux sont stockes en memoire ligne par ligne il me semble...
donc c c'est stocke dans l'ordre Mat[0][0], Mat[0][1], Mat[0][2], .... Mat [1][0],Mat[1][1],Mat[1][2],...
donc c'est mat[no ligne][no colonne] alors que en FORTRAN par exemple c'est mat(no colonne,no ligne)...
 
Bien entendu tu peux prendre comme reference que tes matrices sont rangees colonnes par colonnes. Et si tu ne fais pas de transition interlangages tu peut meme eventuellement te foutres de comment c'est range en memoire :D

Reply

Sujets relatifs:

Leave a Replay

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