FORUM Tom's Hardware » Programmation » C / C++ / Java » Tableau de tableaux en C, mais ????
 

Tableau de tableaux en C, mais ????

Il y a 219 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici



Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Tableau de tableaux en C, mais ????
 
Risen From Ashes
Plus d'informations

avec des dimensions différentes. Plus précisément je veux faire ça
1 0 0 1 0 1 1 1 1 1 0 0
g =
0 1 1 1 0 1 0 1 0

donc mon tableau

Code :
  1. g[0][0] = {1, 0, 0, 1}
  2. g[1][0] = {0, 1, 1}


etc....
et je ne travaille qu'avec des 0 et des 1.
si quelqu'un a une idée...


---------------
No Justice No Peace

 

pourquoi faire cent fois la même chose ?

j'utiliserais un champ de bit affublé d'une longueur.

Risen From Ashes
Plus d'informations

elch a écrit :

j'utiliserais un champ de bit affublé d'une longueur.


je comprends pas ce que tu veux dire :??:


---------------
No Justice No Peace

 

pourquoi faire cent fois la même chose ?

un champ de bit c'est un entier ou tu utilise chacun de ses bits pour stocker tes 0 et tes 1.

le C possède des opérateurs bien pour faire ça, genre :

mettre un 1 dans le n-ième bit (bien sur n commence à 0) :
nombre |= 1<<n;
mettre un 0 dans le n-ième bit :
nombre &= ~(1<<n);
récuperer la valeur du n-ième bit :
(nombre >> n)&1


nombre est de préférence non signé, et possède une taille suffisante pour pouvoir mettre le nombre de bit que l'on veut. le seul truc c'est que on dépasse pas trop les 64 bit avec ça.

dans ton cas, il faut aussi stocker la taille, donc il faut un autre entier à part.

Risen From Ashes
Plus d'informations

elch a écrit :

un champ de bit c'est un entier ou tu utilise chacun de ses bits pour stocker tes 0 et tes 1.

le C possède des opérateurs bien pour faire ça, genre :

mettre un 1 dans le n-ième bit (bien sur n commence à 0) :
nombre |= 1<<n;
mettre un 0 dans le n-ième bit :
nombre &= ~(1<<n);
récuperer la valeur du n-ième bit :
(nombre >> n)&1


nombre est de préférence non signé, et possède une taille suffisante pour pouvoir mettre le nombre de bit que l'on veut. le seul truc c'est que on dépasse pas trop les 64 bit avec ça.

dans ton cas, il faut aussi stocker la taille, donc il faut un autre entier à part.


ça ne répond pas à la question.
le problème c'est comment définir cette structure avec des longueurs différentes des éléments.


---------------
No Justice No Peace

 

pourquoi faire cent fois la même chose ?

je comprend plus la, tu veux quoi au juste ?

Risen From Ashes
Plus d'informations

elch a écrit :

je comprend plus la, tu veux quoi au juste ?


on oublies les 0 et les 1
je veux un tableau de tableaux d'entiers avec des tailles différentes 3 et 4.

Code :
  1. g[0][0] = {1, 0, 0, 1}
  2. g[1][0] = {0, 1, 1}
  3. g[0][1] = {0, 1, 1, 1}
  4. g[1][1] = {1, 0, 1}
  5. g[0][2] = {1, 1, 0, 0}
  6. g[1][2] = {0, 1, 0}


on peut avoir ça facilement ou faut passer par struct ??


---------------
No Justice No Peace

 

pourquoi faire cent fois la même chose ?

t'est obligé de passer par des struct, mais franchement dans ton cas on peut faire plus simple.

Risen From Ashes
Plus d'informations

elch a écrit :

t'est obligé de passer par des struct, mais franchement dans ton cas on peut faire plus simple.


OK, ben alors comment ??


---------------
No Justice No Peace

 

zeb
Profil : Modérateur libre

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Risen From Ashes
Plus d'informations

a écrit :

malloc() !


rien à voir.


---------------
No Justice No Peace

 

zeb
Profil : Modérateur libre

Si tu veux de la "taille variable", soit tu utilises une zone de taille max pour tous et tu perds de la place pour les petits (le champ de bits est une bonne solution puisque tu ne considères que des booléens), soit tu alloues dynamiquement (avec malloc :whistle: ) la taille idéale pour chacun. [:spamafote]. Pour chacun des cas, une valeur dans ta structure pour donner la taille de la zone est conseillée :o


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

tu peus faire un
int * g[n];

puis pour chaque g[i]=malloc(la_bonne_taille);

Et tu peux faire ce que tu veux.

zeb
Profil : Modérateur libre

J'insiste, cyrano. Comment connais-tu la taille de chaque g[n] ?

Code :
  1. struct data_t {
  2.   int size;
  3.   int * data_p;
  4. };
  5. struct data_t g[n];
  6. g[i].size = la_bonne_taille;
  7. g[i].data_p = malloc(g[i].size);



Sauf si la_bonne_taille est connue pour tous les g à tout endroit du programme.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

Aller à :
 
  FORUM Tom's Hardware » Programmation » C / C++ / Java » Tableau de tableaux en C, mais ????

Annonces Google
Publicité
Actualités relatives

Un brevet de plus pour Bill Gates

Publié le 04 January 2004

Le grand patron de Microsoft, Bill Gates, vient de faire breveter son système d'affichage de tableaux numériques. Il a obtenu un brevet pour le système de distribution d'oeuvres d'art qu'il utilise dans sa résidence personnelle de 66, Lire la suite

Aide mémoire - puces graphiques ATi / NVIDIA / XGI

Publié le 31 March 2004

Le site internet Adiran's Rojak Pot a mis en ligne des tableaux récapilatifs des caractéristiques techniques des différentes puces graphiques des fabricants ATi, NVIDIA et XGI : Du Radeon 700 au Radeon 9800 XT chez ATi Du GeForce SDR au GeForce FX Lire la suite

Cartes 3D NVIDIA et ATi - les différents modèles

Publié le 19 February 2004

Les constructeurs de cartes graphiques ATi et NVIDIA nous propose chacun une gamme de cartes graphiques accélérées 3D assez vaste. Bien souvent, quelqu'un qui ne suit pas l'actualité informatique de très près aura du mal à se faire une idée de l Lire la suite

Récapitulatif des spécifications des chips graphiques

Publié le 04 December 2003

Le site internet hongrois HWHunpage a mis en ligne un tableau récapitulatif des caractéristiques techniques de l'ensemble des puces graphiques mises sur le marché depuis 1998 par les constructeurs : NVIDIA ATi S3 Trident SiS Rendition 3dfx Am Lire la suite

Les derniers tests

Les meilleures configurations

Publié le 10 October 2008

<b>Les meilleures configurations</b><br />13 PC complets, suivant vos besoins et votre budget, sélectionnés par la rédaction. Lire la suite

Quel est le meilleur photophone ?

Publié le 10 October 2008

Comparatif des meilleurs photophones face à un appareil photo numérique de référence. Lire la suite

Comparatif ADSL et internet haut débit

Publié le 08 October 2008

Après un mois de Septembre très dynamique, période pendant laquelle nombre d'étudiants et de familles souscrivent à une nouvelle offre d'accès à Internet, le mois d'octobre s'annonce plus calme. Vraiment plus calme ? Lire la suite