begin process at 2012 05 29 22:29:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

problème tableau multi-dimensions


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème tableau multi-dimensions

lundi 18 juin 2007 à 18:01:30 | problème tableau multi-dimensions

totoscill

Bonjour!
j'utilise un tableau [i][3] mais il fait planté mon appli.
Je pense que je l'ai mal déclarer mais je vois pas mon erreur.
mes tableau accepte des nombres flottants.
Il fait planter mon programme dès que je veux écrire dedans:

Visual Studio just in time debugger:

"An unhandled Win 32 exception occured in Post Processing.exe

Exception non gérée à 0x00415767 dans CAPI_PostProcessing.exe : 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0xfdfdfdfd."

Voici mon prog raccourcis:

#include

"stdafx.h"

#include

<conio.h>

#include

<iostream>

#include

<fstream>

#include

<string>

#include

<cmath>

#include

<conio.h>

using

namespace std;

char

FileName[256];

 

 

bool

is_readable( const string & file )

{

ifstream FileName ( file.c_str() );

return !FileName.fail();

}

 

void

_tmain(int argc, _TCHAR* argv[])

{

float CalValues;

float InitPointX,InitPointY;

float DistX,DistY;

char FileName[256];

char Psimu;

fstream File;

string line;

float Power,Dir;

float DistRel,DistAbs;

int NbMeas;

size_t size = line.size()+ 1000000;

char *InfoLine= newchar[size];

int i,j,l,NbMaxValues;

NbMaxValues=100000;

float ** ConvertValues;

float ** Values_To_At;

/*** allocation dynamique de mémoire ***/

ConvertValues=

newfloat *[NbMaxValues];

Values_To_At=

newfloat *[NbMaxValues];

for(i = 0; i<NbMaxValues;i++)

{

ConvertValues[i]=

newfloat[2];

}

for(l=0; l<NbMaxValues;l++)

{

Values_To_At[l]=

newfloat[2];

}

i=0;

if(File)

{

cout<<

"!!!file open!!!\n\n\n"<<endl; //instructions

while ( getline( File, line ) )

{

strncpy( InfoLine, line.c_str(), size );

if (strncmp(InfoLine,";[GPS]",6)==0)

{

Dir=atof(InfoLine+72);

cout<<

"Direction:"<<Dir<<endl;

}

elseif(strncmp(InfoLine,";",1)!=0)

{

NbMeas=atof(InfoLine+0);

if (Psimu=='Y')

{

if(NbMeas<100)

{

Power=-90;

DistRel=atof(InfoLine+17);

}

else

{

Power=-90;

DistRel=atof(InfoLine+18);

}

}

elseif(Psimu=='N')

{

if(NbMeas<100)

{

Power=atof(InfoLine+2);

DistRel=atof(InfoLine+17);

}

else

{

Power=atof(InfoLine+3);

DistRel=atof(InfoLine+18);

}

}

cout <<

"Numero de mesure:"<< NbMeas<<"\tPuissance:"<< Power<<"\tDistance:" << DistRel<<"\tDirection:"<<Dir << endl;

Dir=(Dir*3.141592654)/180;

//conversion deg to rad

ConvertValues[i][0]=DistRel;      //Mon PROGRAMME PLANTE ICI!!!

ConvertValues[i][1]=Dir;

ConvertValues[i][2]=Power;

i++;

}

/*** Calculation of course ***/

i=0;

DistX=(InitPointX+(cos(Dir)*ConvertValues[i][0]))*CalValues;

DistY=(InitPointX+(sin(Dir)*ConvertValues[i][0]))*CalValues;

Values_To_At[i][0]=DistX;

Values_To_At[i][1]=DistY;

Values_To_At[i][2]=ConvertValues[i][2];

i++;

for(i=1;i<NbMaxValues;i++)

{

Values_To_At[i][0]=(Values_To_At[i-1][0]+(cos(Dir)*ConvertValues[i][0]))*CalValues;

Values_To_At[i][1]=(Values_To_Atl[i-1][0]+(sin(Dir)*ConvertValues[i][0]))*CalValues;

Values_To_At[i][2]=ConvertValues[i][2];

}

}

}

else

{

cout <<

"Impossible d'ouvrir le fichier !" << endl;

return ; //l'ouverture à échoué, on quitte...

}

File.close();

delete [] InfoLine;

delete ConvertValues;

delete Values_To_Atoll;

/*** Fin du programme ***/

return}
mon programme récupère des infos dans un fichier. Ces infos sont enregistrer dans mon tableau puis convertit pour être envoyé vers un autre tableau qui me permettra d'écrire un fichier avec mes infos convertit.

Quelqu'un pourrai m'aidé?

Je vous remercie.
Cordialement
lundi 18 juin 2007 à 18:17:58 | Re : problème tableau multi-dimensions

SAKingdom

Membre Club
Ton code est extrêmement dur à lire.

J'ai tout de même repéré ceci:

ConvertValues[i]=

newfloat[2];

ainsi que

Values_To_At[l]=

newfloat[2];

avec

ConvertValues[i][2]=Power;

et

Values_To_At[i][2]=ConvertValues[i][2];

Tu alloues de la mémoire pour 2 float mais tu essais d'en stocker 3.
Aussi, je ne vois aucun endroit ou tu test i dans ta boucle while(getline...). D'après ce que je peux comprendre, s'il y a plus de 3 lignes, tu écris en dehors du buffer.

Dans les deux cas si-dessus, tu as un buffer overflow.



C++ (@++)



Cette discussion est classée dans : to, at, values, infoline, convertvalues


Répondre à ce message

Sujets en rapport avec ce message

int to char ! [ par nullspace ] Voila mon problème !J'ai une résultat sous forme de variable INT, et je veux que ce résultat soit affecté à une variable de type CHAR.Genre, si j'ai 6 Conversion Float to String [ par PierreP ] Bonjour à tous !je suis en train de me prendre la tête pour créer une fonction de conversion d'un réel en une chaine de caractère (problème du débutan Unsigned char to AnsiString et Ansistring to UnS Char??? [ par asik38 ] Comment on fait pour convertir unsigned char an ansistringEt de AnsiString en unsigned char*Merci!!! char* to unsigned char* [ par rodrigos ] comment peut-on convertir un char* en unsigned char*?à quoi correspond un unsigned char*?Merci pour votre aide!! commandes AT [ par croll ] Bonjour,Lorsque j'envoi une commande AT à mon modem je ne parviens pas à lire la réponse. J'utilise la méthode suivante : HANDLE hPort = CreateFile [MFC] Problème avec les splitters [ par juanito64 ] Bonjour a tousJe suis entrain de developper une appli SDI sous visual C++Pour diviser ma fenetre principale, j'ai utilisé des splitters (au nombre de DLL C++ To VB ;-) [ par jmtoulon ] Bonjour :)Voila je voudrais savoir si il est possible de fabriquer une DLL en C++ et de l'intéger dans VB ?Le but de mon projet est de calcul et grand traduction delphi to borland c++ [ par aphane ] Quelqu'un saurait-il me traduire cet extrait de code que j'ai écrit avec delphi5 en c++borlandmerciprocedure TForm1.Button2Click(Sender: TObject); var Coord 2D to 3D [ par bat67000 ] Comment optenir d'un point 2D sur l'app les coordonnees du point 3D associé avec la matrice de projection ?(je pige pas bien comment fonctionne la mat vc++ OFN_ALLOWMULTISELECT CFileDialog [ par pichu ] je comprends pas ce que je doit faire avec m_ofn.lpstrFile dans l'extrait de la msdn quand je veux recuperer plusieurs chemins de fichiers :To allow t


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,666 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales