Problème d'écriture en boucle donnant des fichiers vides
Asmodeean
Messages postés1Date d'inscriptionmardi 23 mars 2010StatutMembreDernière intervention31 mars 2010
-
31 mars 2010 à 15:50
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 2014
-
31 mars 2010 à 17:28
Bonjour à vous tous,
Je suis actuellement en train de programmer un logiciel pour du transfert de rayonnement et je butte sur pas mal de problèmes.
Le plus embêtant pour l'heure est celui ci:
Je cherche à imprimer trois colonnes de données dans un fichier .dat que je lirai ensuite dans GNUplot pour faire un graphe 3D. Mon prgramme étant long et lourd, je veux écrire ces colonnes dans un fichier .dat, les lire avec GNUplot, sauvegarder l'image sur le répertoire actuel, fermer le fichier et l'écraser avec la prochaine itération de boucle. Comme ça je ne sauvegarde que les images, ce qui est le plus important pour moi.
Or, après avoir tout programmé, je lance la machine mais seul le fichier .dat est créé, il n'est pas remplit. Ce qui est incompréhensible pour moi, car cela marche avec deux autres fichiers en écriture simultannées.
Pourriez vous m'aider ?
Je poste ici le code concernant la aprtie:
// Creating a data file used with GNUplot to draw graphs
ofstream objetfichier;
objetfichier.open("plot.dat", ios::trunc);
if (objetfichier.bad())
return 1;
// loop for the imaging axis
for (int x; x<=Data[28]; x++)
{
for (int y; y<=Data[29]; y++)
{
// loop for the spectroscopic channels
for (l; l<Data[26]; l++)
{
I[l][x][y] = Col[i].Row[j].I[l][x][y];
Q[l][x][y] = Col[i].Row[j].Q[l][x][y];
U[l][x][y] = Col[i].Row[j].U[l][x][y];
V[l][x][y] = Col[i].Row[j].V[l][x][y];
// compute the polarization p
if (I[l][x][y]!=0)
{
p = sqrt(Q[l][x][y]*Q[l][x][y]+U[l][x][y]*U[l][x][y]+V[l][x][y]*V[l][x][y])/I[l][x][y];
}
else
{
p = 0;
}
// compute the polarization position angle
if ((U[l][x][y]==0)&&(Q[l][x][y]==0))
{
theta = 0;
}
else
{
theta = 90/pi*atan2(U[l][x][y],Q[l][x][y]);
}
// compute a normalization constant for the fluxes
N = (Data[0]*(Data[2]+(l+0.5)*Data[4]/Data[26]))/10000;
// print X and Y value
out_stream << -(Data[30]/2)+x*(Data[30]/Data[28]) << " ";
Ne vous en faites pas pour les calculs ils sont justes.
out_stream et res_stream sont deux autres écritures de fichier qui marchent à merveille.
Le fichier graph.gnu marche aussi très bien.
A voir également:
Problème d'écriture en boucle donnant des fichiers vides