Bonjour à tous!
grand débutant
soft: visual basic c++ 6.0
J'ai réalisé un programme qui lit un fichier texte qui contient x lignes et 3 colonnes. Je récupère les données lu dans un tableau. Puis je les traite à ma guise. Pour cela j'ai besion d'autres tableaux. En moyenne, mon fichier texte contient 900 lignes. Au départ, je travaillais avec des tableaux déclarés classiquement quand j'avais moins de 100 lignes et là je n'avais pas de soucis. Avec 900 lignes je suis passé à l'allocation dynamique (je ne ss pas encore très à l'aise avec) et je n'ai aucune erreur de compilation, ni de construction pourtant quand j'exécute je ne peux tjrs pas lire un nombre de lignes important. Y'a t-il des erreurs dans la déclaration de mes tableaux? si oui lesquels? est ce que le problème est ailleurs? dernière question: est ce que vous pensez qu'une version moins archaïque de visual évite de ce genre de pb?
Voici comment je procède:
//extrait main
int main( int argc, char *argv[])
{
double **XYZ = NULL; //Tableau X, Y, Z (c-à-d mes 3 colonnes)
double *dPath= NULL; // longueur totale
double **dInstPath = NULL; //longueur trajet#
double **dInsVitesse = NULL; //vitesse instantanée
double *dX = NULL;
double *dY = NULL;
int nblignes = 0;
int nbcolonnes = 0;
ifstreamf("fichier.txt");
//Définir nb lignes et de colonnes
printf("combien de lignes?\n");
scanf("%4d",&nblignes);
printf("combien de colonnes?\n");
scanf("%4d",&nbcolonnes);
//L'ouverture est elle possible?
//Si non
if (!f.is_open())cout<<"Impossibl e d'ouvrir le fichier en lecture"<<endl;
//Si oui
else
{
//Allocation
XYZ = (double**) malloc (nblignes*sizeof(int));
dInstPath = (double**) malloc (nblignes*sizeof(int));
dInstVitesse = (double**) malloc (nblignes*sizeof(int));
dX = (double*) malloc (nblignes*sizeof(int));
dY = (double*) malloc (nblignes*sizeof(int));
dPath = (double*) malloc (nblignes*sizeof(int));
for(i=0;i<nblignes;i++)
{
XYZ[i]= (double*) malloc(nbcolonnes * sizeof(int));
dInstPath[i]= (double*) malloc(nbcolonnes * sizeof(int));
dInstVitesse[i] = (double*) malloc(nbcolonnes * sizeof(int));
}
//Envoyer données .txt vers tableau XYZ[][]
for(i=0;i<nblignes;i++)for(j=0 ;j<nbcolonnes;j++)f>>XYZ[i][j]; //Mon tableau se remplit tjrs sans soucis qqsoit le nombre de lignes de XYZ c'est après que ça plante.
}
//Fermer le fichier une fois les données récupérées
f.close();
// Les autres tableaux me servent à traiter mes données puis je copie le traitement ds un nouveau fichier texte.
.............................. .....
// Je libère la mémoire
free(XYZ);
free(dPath); //idem pr ts les tableaux
......
return 0;
}
ps: dsl pr les balises
-----