besoin d'aide sur tableau dynamique
Bonjour,
je recherche un peu d'aide quant à la création d'une matrice dynamique.
Voila dans une fonction, je lis dans un .txt un grand vecteur de 220500 termes, et quand je détecte qq chose, j'incrémente une valeur; jusque là c'est basic... :wink:
mais ce que je voudrai faire c que tjrs dans ma boucle for, dès que je détecte un signal et que j'incrémente mon compteur, je voudrait allouer dynamiquement une colonne de la matrice.
Comment je dois faire pour créer une colonne ?? sachant que je n'ai pas le définir un tableau à 2 dimensions avec les colonnes à 0 ...
Merci de votre aide !!
:)
Code:
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
|
int input_vector[Fs*acquisition_time];
int *p_input_vector;
p_input_vector=input_vector;
int i,j,k,l,m,n,o;
int impulse_number=0;
//Ici j'ouvre mon fichier .txt
//Détection du nombre d'impulsions
for(i=0; i<Fs*acquisition_time; i++)
{
if(abs(input_vector[i])>seuil_detection)
{
if(i+2000<Fs*acquisition_time && i>200)
{
impulse_number++;
// j'ai détecté un signal et j'incrémente mon compteur
// ICI j'aimerai donc allouer une colonne d'une matrice
dans laquelle je v pouvoir recoipier le signal
j=i-200;
if(impulse_number==0)
{
printf("Il n'y a aucune impulsion détectée...\n");
}
then
{
int impulse_matrix[impulse_time][impulse_number]; |
Re: besoin d'aide sur tableau dynamique
Citation:
Envoyé par littlesquall
Comment je dois faire pour créer une colonne ?? sachant que je n'ai pas le définir un tableau à 2 dimensions avec les colonnes à 0 ...
Code:
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
|
int input_vector[Fs*acquisition_time];
int *p_input_vector;
p_input_vector=input_vector;
int i,j,k,l,m,n,o;
int impulse_number=0;
//Ici j'ouvre mon fichier .txt
//Détection du nombre d'impulsions
for(i=0; i<Fs*acquisition_time; i++)
{
if(abs(input_vector[i])>seuil_detection)
{
if(i+2000<Fs*acquisition_time && i>200)
{
impulse_number++;
// j'ai détecté un signal et j'incrémente mon compteur
// ICI j'aimerai donc allouer une colonne d'une matrice
dans laquelle je v pouvoir recoipier le signal
j=i-200;
if(impulse_number==0)
{
printf("Il n'y a aucune impulsion détectée...\n");
}
then
{
int impulse_matrix[impulse_time][impulse_number]; |
Une matrice creuse ?
Un tableau de pointeurs
Statique :
Dynamique :
Code:
T **a = malloc (N* sizeof *a);
Tous les pointeusrs sont forcés à NULL.
Ensuite, tu alloues les lignes selon tes besoins :
Code:
1 2 3
| a[x] = malloc (sizeof *a[x]* n);
<...>
a[y] = malloc (sizeof *a[y]* m); |
Prévoir un mécanisme de sentinelle, ou alors garder la taille en mémoire. Dans ce cas, une structure s'impose :
Code:
1 2 3 4 5 6
|
struct tab_dyn
{
T *p;
size_t n;
}; |
et le tableau qui va avec :
Statique :
Code:
struct tab_dyn *a[N];
Dynamique :
Code:
struct tab_dyn **a = malloc (N* sizeof *a);
(Observer au passage la maintenance réduite malgré le changement de type...)