1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
// VC6.cpp*: définit le point d'entrée pour l'application console.
//
/clr
#include "stdafx.h"
#include <fstream>
#include <iomanip>
#include <iostream>
#include <cstring>
#include "stdio.h"
#include "stdlib.h"
#include <vcclr.h>
#include <vector>
//#include <string>
using namespace std;
using namespace System;
FILE *fp1;
std::string;
//Variable
char * prt_info2;
int i,nb_step_Y,nb_step_X,j,k,cc,dd,n;
long recl,lenr,numf,numx,numy;
float xmin,xmax,ymin,ymax;
struct info{
float *X;
float *Y;
float *Z;
float *A;
float *B;
float *C;
float *F;
};
info info2,bar,juju;
int main()
{
String ^str;
int num_rec = 0;
pin_ptr<const wchar_t> wch = PtrToStringChars(str);
// Convert to a char*
size_t origsize = wcslen(wch) + 1;
const size_t newsize = 1000;
size_t convertedChars = 0;
char nstring[newsize];
wcstombs_s(&convertedChars, nstring, origsize, wch, _TRUNCATE);
//strcat_s(nstring, " (char *)");
errno_t err;
//Read from data file
if((err=fopen_s(&fp1,"C:\\Sample\\project2DAT.dat","rb"))!=0)
fread(&recl,sizeof(recl),1,fp1);
lenr=recl/256/4;
fseek(fp1,28+24,0);
fread(&numf,sizeof(numf),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);
for (long i=0;i<2;i++)
{
fread(&info2.X[i],4,1,fp1);
fread(&info2.Y[i],4,1,fp1);
fread(&info2.Z[i],4,1,fp1);
fread(&info2.A[i],4,1,fp1);
fread(&info2.B[i],4,1,fp1);
fread(&info2.C[i],4,1,fp1);
fread(&info2.F[i],4,1,fp1);
}
fclose(fp1);
//build the step for smaller grid
nb_step_Y=(int)ymax-(int)ymin;
nb_step_X=(int)xmax-(int)xmin;
//build the array with the lines by smaller grid
cc=0;
for (long j=0;j<nb_step_Y;j++)
{
for (long k=0;k<nb_step_X;k++)
{
cc=cc+1;
dd=0;
for (i=0;i<numx;i++)
{
if ((xmin-0.5*k < info2.X[i] < xmin+0.5*k)&&(ymin-0.5*j < info2.Y[i] < ymin+0.5*j))
dd=dd+1;
juju.X[dd]=info2.X[i];
juju.Y[dd]=info2.Y[i];
juju.Z[dd]=info2.Z[i];
juju.A[dd]=info2.A[i];
juju.B[dd]=info2.B[i];
juju.C[dd]=info2.C[i];
juju.F[dd]=info2.F[i];
for (cc=1;cc<dd;cc++)
{
n=k*j;
bar.X[n] = juju.X[cc];
bar.Y[n] = juju.Y[cc];
bar.Z[n] = juju.Z[cc];
bar.A[n] = juju.A[cc];
bar.B[n] = juju.B[cc];
bar.C[n] = juju.C[cc];
bar.F[n] = juju.F[cc];
};
bar.X[n] = bar.X[n]/dd;
bar.Y[n] = bar.Y[n]/dd;
bar.Z[n] = bar.Z[n]/dd;
};
};
};
// recording of result in file txt
FILE* fichier = NULL;
fichier = fopen("C:\\Sample\\donnees.txt", "a+");
if (fichier != NULL)
{
fputs("Récapitulatif :\n", fichier);
for (cc=1;cc<dd;cc++)
{
fprintf(fichier, "*", bar.X[cc], "*", bar.Y[cc], "*", bar.Z[cc], "*", bar.A[cc], "*", bar.B[cc], "*", bar.C[cc], "*", bar.F[cc]);
}
fclose(fichier); // On ferme le fichier qui a été ouvert
cout << "writing is ok\n";
}
else
{
// errror
printf("Impossible to open the file");
}
system("pause");
return 0;
}; |
Partager