cedm237 Profil : Jeune recrue | bonjour, j'ai fait un petit programme en c++ et je compile avec visual studio 2008, j'ai un xp 64, et 2 choses me paraissent bizarres:
-en x32 le programme fonctionne en debug et en release
mais en x64, il ne fonctionne plus.
-second problème, je voudrais faire tourner mes 4 cores à fond, j'ai donc ajouter dans les propriétés la command line /MP4 et ca fait rien du tout, l'occupation core tourne à 25-30% sur l'ensemble des cores.
Merci pour vos réponses, @+
Code :
- // VC11.cpp : définit le point d'entrée pour l'application console.
- // VC8b.cpp : définit le point d'entrée pour l'application console.
- //
- #include "stdafx.h"
- #include <fstream>
- #include <iomanip>
- #include <iostream>
- #include <cstring>
- #include "stdio.h"
- #include "stdlib.h"
- #include <vector>
- FILE *fp1;
- FILE *fp2;
- std::string;
- //Variable
- int i,h,nb_step_X,nb_step_Y,nb_step_Z,j,k,dd,n;
- long lenr,numf,numx,numy,recl;
- float xmin,xmax,ymin,ymax,zmin,zmax,x1,x2,y1,y2,z1,z2,xi,yi,zi,ai,bi,ci,fi;
- struct inf2 {
- float X, Y, Z ;
- float A, B, C, F ;
- }info2[10000000];
- struct juj2 {
- float X, Y, Z ;
- float A, B, C, F ;
- }juju2[10000000];
- struct moy {
- float X, Y, Z ;
- float A, B, C, F ;
- }moy2[10000000];
- int precision = 1; //mm
- float aa[10000000];
- float bb[10000000];
- float uu[10000000];
- float zz[10000000];
- int main()
- {
- errno_t err;
- //Read from data file
- if((err=fopen_s(&fp1,"C:\\Sample\\raysdetector.dis","rb" ))!=0)exit(-1);
- fseek(fp1,28,0);
- fread(&recl,sizeof(recl),1,fp1);
- lenr=recl/256/4;
- fseek(fp1,28+24,0);
- fread(&numf,4,1,fp1);
- fseek(fp1,3*28+16,0);
- fread(&ymin,4,1,fp1);
- fread(&ymax,4,1,fp1);
- fread(&numy,4,1,fp1);
- fseek(fp1,4*28+16,0);
- fread(&xmin,4,1,fp1);
- fread(&xmax,4,1,fp1);
- fread(&numx,4,1,fp1);
- FILE* fichier3 = NULL;
- fichier3 = fopen("C:\\Sample\\header.txt", "a+" );
- //fprintf(fichier3,"%i \ ", recl);
- //fprintf(fichier3,"%i \ ", numf);
- //fprintf(fichier3,"%f \ ", ymin);
- //fprintf(fichier3,"%f \ ", ymax);
- fprintf(fichier3,"%i \ ", numy);
- //fprintf(fichier3,"%f \ ", xmin);
- //fprintf(fichier3,"%f \ ", xmax);
- //fprintf(fichier3,"%i \n ", numx);
- fclose(fichier3);
- fread(&info2[0].X,4,1,fp1);
- xmin=info2[0].X;
- xmax=xmin;
- fread(&info2[0].Y,4,1,fp1);
- ymin=info2[0].Y;
- ymax=ymin;
- fread(&info2[0].Z,4,1,fp1);
- zmin=info2[0].Z;
- zmax=zmin;
- fread(&info2[0].A,4,1,fp1);
- fread(&info2[0].B,4,1,fp1);
- fread(&info2[0].C,4,1,fp1);
- fread(&info2[0].F,4,1,fp1);
- numx=-numy;
- //numx=100;
- for (long i=1;i<numx;i++)
- {
- fread(&info2[i].X,4,1,fp1);
- if (xmax < (info2[i].X))
- {
- xmax= info2[i].X;
- } else {}
- if (xmin > (info2[i].X))
- {
- xmin= info2[i].X;
- }else {}
- fread(&info2[i].Y,4,1,fp1);
- if (ymax < (info2[i].Y))
- {
- ymax= info2[i].Y;
- } else {}
- if (ymin > (info2[i].Y))
- {
- ymin= info2[i].Y;
- } else {}
- fread(&info2[i].Z,4,1,fp1);
- if (zmax < (info2[i].Z))
- {
- zmax= info2[i].Z;
- } else {}
- if (zmin > (info2[i].Z))
- {
- zmin= info2[i].Z;
- }else {}
- fread(&info2[i].A,4,1,fp1);
- fread(&info2[i].B,4,1,fp1);
- fread(&info2[i].C,4,1,fp1);
- fread(&info2[i].F,4,1,fp1);
- }
- //build the step for smaller grid
- nb_step_Y=int((ymax-ymin+2)/precision);
- nb_step_X=int((xmax-xmin+2)/precision);
- nb_step_Z=int((zmax-zmin+2)/precision);
- //build the array with the lines by smaller grid
- n=0;
- for (long k=0;k<nb_step_X+2;k++)
- {
- for (long j=0;j<nb_step_Y+2;j++)
- {
- for (long l=0;l<nb_step_Z+2;l++)
- {
- dd=0;
- for (h=0;h<numx;h++)
- {
- xi=info2[h].X;
- x1=xmin-0.5+precision*k;
- x2=xmin+0.5+precision*k;
- yi=info2[h].Y;
- y1=ymin-0.5+precision*j;
- y2=ymin+0.5+precision*j;
- zi=info2[h].Z;
- z1=zmin-0.5+precision*l;
- z2=zmin+0.5+precision*l;
- ai=info2[h].A;
- bi=info2[h].B;
- ci=info2[h].C;
- fi=info2[h].F;
- if (x1<xi && xi<x2 && y1<yi && yi<y2 && z1<zi && zi<z2)
- {
- juju2[dd].X=xi;
- juju2[dd].Y=yi;
- juju2[dd].Z=zi;
- juju2[dd].A=ai;
- juju2[dd].B=bi;
- juju2[dd].C=ci;
- juju2[dd].F=fi;
- juju2[-1].X=0;
- juju2[-1].Y=0;
- juju2[-1].Z=0;
- juju2[-1].A=0;
- juju2[-1].B=0;
- juju2[-1].C=0;
- juju2[-1].F=0;
- moy2[dd].X = (juju2[dd-1].X+juju2[dd].X)/(dd+1);
- moy2[dd].Y = (juju2[dd-1].Y+juju2[dd].Y)/(dd+1);
- moy2[dd].Z = (juju2[dd-1].Z+juju2[dd].Z)/(dd+1);
- moy2[dd].A = juju2[dd-1].A+juju2[dd].A;
- moy2[dd].B = juju2[dd-1].B+juju2[dd].B;
- moy2[dd].C = juju2[dd-1].C+juju2[dd].C;
- moy2[dd].F = juju2[dd-1].F+juju2[dd].F;
- dd=dd+1;
- n=n+1;
- aa[n]=moy2[dd-1].X;
- bb[n]=moy2[dd-1].Y;
- uu[n]=moy2[dd-1].Z;
- zz[n]=moy2[dd-1].F;
- }
- }
- }//for l
- }//for k
- }//for j
- // recording of result in file txt
- FILE* fichier = NULL;
- fichier = fopen("C:\\Sample\\donnees.txt", "a+" );
- for (n=0;n<=numx;n++)
- {
- fprintf(fichier,"%f \ ", aa[n]);
- fprintf(fichier,"%f \ ", bb[n]);
- fprintf(fichier,"%f \ ", uu[n]);
- fprintf(fichier,"%f \n ", zz[n]);
- }
- fclose(fichier); // On ferme le fichier qui a été ouvert
- return 0;
- }
|
|