Bonjour, je débute en c (sous tigcc) et j'ai des problèmes avec les matrices.
Je créé une matrice avec:
int cube[10][3];
Puis, je voudrais l'initialiser avec quelque chos du genre:
cube=[[1,1,1][1,-1,1][-1,-1,1][-1,1,1][1,1,-1][1,-1,-1][-1,-1,-1][-1,1,-1][0,1,2][0,-1,2]]; (comme en basic)
Mais ceci est incorect!
Dois je l'initialiser case par case (avec cube[1][1]=1)?
C'est long!
Tu peux faire comme ça:
int tableau[2][2]={{1,2},{3,4}}

Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?
Merci, cela fonctionne.
Je voudrais savoir s'il existe un myen d'effacer rapidement le contenu d'une matrice (sans remplir une à une les cases de 0)
Et aussi copier le contenu d'une matrice dans une autre.
Ben si, y en a 36 :
memcpy(machin2, machin, x*y*sizeof(int));
(ce sera à la fois plus petit et plus rapide, sauf si la matrice est petite)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
dal Le 11/04/2006 à 17:19 Pollux> Il faut pas pour faire ca que toutes les lignes de la matrice soient contigue?
ben elles le sont toujours, non ?
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
dal Le 11/04/2006 à 17:28 Meme dans le cas ou un 'malloc' est fait pour chaque ligne?
si tu fais un malloc pour chaque ligne, c'est pas une matrice.
... c'est un tableau de (pointeurs vers des) tableaux ^^
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Zeph Le 11/04/2006 à 19:06 ouh même là dessus y'a de quoi troller pendant des pages... peu importe, pour répondre uniquement à la question, non ça ne marche pas.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
j'ai un nouveau problème, j'ai rajouté:
for( i=1; i<=4; i++)
{
DrawLine(draw[1][i], draw[2][i], draw[1][1+(i%4)], draw[2][1+(i%4)], A_NORMAL);
}
Le programme se compile mais il plante sur vti en affichant: Illegal Instruction.
Quelle est mon erreur?
(et tu as oublié un cast)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Zeph Le 14/04/2006 à 18:44 oué enfin là du coup, autant utiliser "int (*mat)[y]; mat = malloc(x * sizeof (*mat));" et ne pas se faire chier ^^

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Oui mais ce n'est pas aussi général : y est fixe... (sauf en C99, mais alors autant faire carrément "int (*mat)[x][y];" ^^)
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
ah, très juste. D'autant plus grave que si sizeof(int) est différent de sizeof(int*), le pointeur calculé était faux.
j'aurais dû essayer de compiler, il m'aurait fait un warning en principe ^^