bonjour,
je veux créer une matrice. La première colonne de la matrice sont des valeurs et les autres colonnes sont de type structure.
est-ce que je peux avoir ça en C??
Merci
bonjour,
je veux créer une matrice. La première colonne de la matrice sont des valeurs et les autres colonnes sont de type structure.
est-ce que je peux avoir ça en C??
Merci
Tu peux créer une structure contenant un tableau de valeurs de taille N et un tableau de structures à deux dimensions de taille N*M.
Et puisque la structure est spécifique à ton usage, tu peux aussi créer toutes les fonctions nécessaires pour manipuler cette structure. Comme ça, du point de vue de l'utilisateur, tout est encapsulé.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
oui mais pour ça chaque case de la matrice est de type structure {tableau de valeurs, tableau de structures à deux dimensions de taille N*M}.
Une bidouille :
...puis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #define MATRIX_WIDTH 16 #define MATRIX_HEIGHT 12 struct foo { // ... }; struct bar { int key; struct foo values[MATRIX_WIDTH - 1]; }; typedef struct bar matrix[MATRIX_HEIGHT]; typedef unsigned int uint_t; void matrix_set(matrix m, uint_t x, uint_t y, const int *key, const struct foo *value) { struct bar *entry = &m[y]; if (x == 0) entry->key = *key; else entry->values[x - 1] = *value; } void matrix_get(const matrix m, uint_t x, uint_t y, int *key, struct foo *value) { const struct bar *entry = &m[y]; if (x == 0) *key = entry->key; else *value = entry->values[x - 1]; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include <stdlib.h> // ... matrix m; int key = 5; matrix_set(m, 0, 3, &key, NULL); struct foo value; matrix_get(m, 2, 7, NULL, &value);
Bonjour,
typiquement en C quand on doit avoir un type qui mélange des types différents on utilise union.
Pour connaître le type contenu on crée un enum et on enrobe le tout dans une struct :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 typedef enum {VT_INT, VT_DOUBLE, } variant_type_t; typedef struct { variant_type_t vtype; union { int val_int; double val_double; }; } variant_t; ... variant_t var_int = {.vtype=VT_INT, .val_int=42}; variant_t var_dbl={.vtype=VT_DOUBLE, .val_double=42.0}; variant_t var_array[] = { var_int, var_dbl };
Partager