Problème tableau

totoscill Messages postés 48 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 10 décembre 2009 - 7 juin 2007 à 09:53
totoscill Messages postés 48 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 10 décembre 2009 - 7 juin 2007 à 15:31
Bonjour,
j'utilise un tableau pour stocker mes données mesurés. Le problème est que les valeurs stocké sont totalement différentes des valeurs données.
Voici le code:

double

Dist=0   // initialisation des données

double * DistValues =
new
double[];

DistValues=(

double*)malloc(NUMBER_MAX_MEASURES *
sizeof(
double));      // allocation de mémoire pour mon tableau

while

(!(Gps->isReady()))   // début des mesures{

#ifndef _CAPI_SA_NOCONNECT_ENABLEnbMes Analyseur->getList(syntaxe,freqNb, *(values+ k)); // freqNb nbMes = nb of frequencies

#endif

DAQ.startMeasAbs();

Dist=DAQ.getDistAbs();      // récupération de mes infos

DistValues[m] = Dist;      // envoie de mes infos dans mon tableau

//printf("mesure %i : %lf\n",k, Dist);

//Sleep(1);m++;

k++;

}

for(
int j=0; j<k;j++){

sprintf(lastLine,

"%d\t%02.2f\t\t Distance covered: %02.2f cm",j, values[j][i], DistValues[m]);      // écriture de mes infos dans un fichierfprintf(pfs,

"%s\n", lastLine);Sleep(1);

}

quelqu'un saurait il ou est le problème?

Je vous remercie

3 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 juin 2007 à 14:35
double
* DistValues =

new
double
[];

DistValues=(

double*)malloc(NUMBER_MAX_MEASURES *
sizeof(
double));      // allocation de mémoire pour mon tableau

C'est un ou c'est l'autre mais pas les deux. Tu es en C++ ?

double *DistValues = new double[


NUMBER_MAX_MEASURES];
et
delete[] DistValues
quand tu n'as plus besoin de la mémoire.

Ensuite







sprintf(lastLine,




"%d\t%02.2f\t\t Distance covered: %02.2f cm"
,j, values[j][i], DistValues[m]);      // écriture de mes infos dans un fichierfprintf(pfs,


"%s\n"
, lastLine);

Tu peux utiliser directement fprintf je crois. Pas la peine de passer par sprintf. Pour ce qui est des valeurs incorrectes, d'après le code, c'est tout à fais normal. Tu réutilise m pour extraire les valeurs de DistValues mais m n'est pas égal à 0 mais au nombre de donnés entrées. Et même si il était réinitialisé à 0, tu ne l'incrémente nul part ce qui fait que tu extrairais toujours la première valeurs.







C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
7 juin 2007 à 14:47
Et aussi, values[j][i].
Seul j est incrémenté ce qui me fais croire que, encore une fois, c'est un simple pointeur qu'il aurait fallu ici et non un pointeur de pointeurs ou un tableau à 2 dimensions.

C++ (@++)<!--
0
totoscill Messages postés 48 Date d'inscription jeudi 26 avril 2007 Statut Membre Dernière intervention 10 décembre 2009
7 juin 2007 à 15:31
Ok, je te remercie.
Je commence à comprendre les tableaux et par la meme occasion les pointeurs.
J'ai prix exemple sur un code totalement faux qui m'a pas aidé.
0