cobra144 Temat założony przez niniejszego użytkownika |
Błąd w trakcie kompilacji struktury terenu » 2015-12-06 16:13:32 Witam! Mam kod struktury terenu następnie chciałbym z niego wyodrębnić punkty x,y,z i w tym momencie pojawia się problem z którym nie mogę sobie poradzić mógłby ktoś zerknąć i pomóc w jego rozwiązaniu?
#include <iostream> #include <math.h>
using namespace std;
typedef unsigned int uint; typedef float real;
struct Sizes { uint sizeX; uint sizeY; };
struct Range { real minX; real minY; real maxX; real maxY; };
struct Point3{ real x; real y; real z; };
typedef real * preal;
struct Data { preal xData; preal yData; preal zData; };
Sizes initSizes(uint sx, uint sy) { Sizes s;
s.sizeX = sx; s.sizeY = sy;
return s; }
Range initRange(real minx, real maxx, real miny, real maxy) { Range r;
r.minX = minx; r.minY = miny; r.maxX = maxx; r.maxY = maxy;
return r; }
preal initX(Sizes &sizes, Range range, uint length) { //uint length = sizes.sizeX * sizes.sizeY;
preal x = new real[length];
real hX = (range.maxX - range.minX) / (real)(sizes.sizeX - 1);
for (int i = 0; i < sizes.sizeY; i++) { for (int j = 0; j < sizes.sizeX; j++) { x[i*sizes.sizeX + j] = range.minX + j*hX; } }
return x; }
preal initY(Sizes &sizes, Range range, uint length) { //uint length = sizes.sizeX * sizes.sizeY;
preal y = new real[length];
real hY = (range.maxY - range.minY) / (real)(sizes.sizeY - 1);
for (int i = 0; i < sizes.sizeY; i++) { for (int j = 0; j < sizes.sizeX; j++) { y[i*sizes.sizeX + j] = range.minY + i*hY; } }
return y; }
preal initZ(Sizes &sizes, Range range, uint length, real(*function)(real, real)) { //uint length = sizes.sizeX * sizes.sizeY;
preal z = new real[length];
real hX = (range.maxX - range.minX) / (real)(sizes.sizeX - 1); real hY = (range.maxY - range.minY) / (real)(sizes.sizeY - 1);
for (int i = 0; i < sizes.sizeY; i++) { for (int j = 0; j < sizes.sizeX; j++) { z[i*sizes.sizeX + j] = function(range.minX + i*hX, range.minY + i*hY); } }
return z; }
real genZ1(real x, real y) { return 1.; }
real genZ2(real x, real y) { return exp(x); }
void showVector(real * v, uint l) { for (int i = 0; i < l; i++) cout << "v[" << i << "]= " << v << endl; }
Data initData(preal x, preal y, preal z) { Data d; d.xData = x; d.yData = y; d.zData = z; return d; }
//funkcja zwracajaca punkty Point3 getpoint(Data data,uint i, uint j) { Point3 p; return p;
}
int main(void) { Sizes sizes = initSizes(3, 3); Range range = initRange(-1., 1., -1., 1.);
uint length = sizes.sizeX * sizes.sizeY;
preal xData = initX(sizes, range, length); preal yData = initY(sizes, range, length); preal zData = initZ(sizes, range, length, genZ1); //showVector(zData, length); Data teren = initData(xData, yData, zData); Point3 getPoint(teren, 1, 1);// TU POJAWIA SIĘ BŁĄD } |
|
1aam2am1 |
» 2015-12-07 07:36:29 Nie patrzyłem w kod za dużo ale tu masz poprawiony ten błąd. #include <iostream> #include <math.h>
using namespace std;
typedef unsigned int uint; typedef float real;
struct Sizes { uint sizeX; uint sizeY; };
struct Range { real minX; real minY; real maxX; real maxY; };
struct Point3 { real x; real y; real z; };
typedef real * preal;
struct Data { preal xData; preal yData; preal zData; };
Sizes initSizes( uint sx, uint sy ) { Sizes s; s.sizeX = sx; s.sizeY = sy; return s; }
Range initRange( real minx, real maxx, real miny, real maxy ) { Range r; r.minX = minx; r.minY = miny; r.maxX = maxx; r.maxY = maxy; return r; }
preal initX( Sizes & sizes, Range range, uint length ) { preal x = new real[ length ]; real hX =( range.maxX - range.minX ) /( real )( sizes.sizeX - 1 ); for( int i = 0; i < sizes.sizeY; i++ ) { for( int j = 0; j < sizes.sizeX; j++ ) { x[ i * sizes.sizeX + j ] = range.minX + j * hX; } } return x; }
preal initY( Sizes & sizes, Range range, uint length ) { preal y = new real[ length ]; real hY =( range.maxY - range.minY ) /( real )( sizes.sizeY - 1 ); for( int i = 0; i < sizes.sizeY; i++ ) { for( int j = 0; j < sizes.sizeX; j++ ) { y[ i * sizes.sizeX + j ] = range.minY + i * hY; } } return y; }
preal initZ( Sizes & sizes, Range range, uint length, real( * function )( real, real ) ) { preal z = new real[ length ]; real hX =( range.maxX - range.minX ) /( real )( sizes.sizeX - 1 ); real hY =( range.maxY - range.minY ) /( real )( sizes.sizeY - 1 ); for( int i = 0; i < sizes.sizeY; i++ ) { for( int j = 0; j < sizes.sizeX; j++ ) { z[ i * sizes.sizeX + j ] = function( range.minX + i * hX, range.minY + i * hY ); } } return z; }
real genZ1( real x, real y ) { return 1.; }
real genZ2( real x, real y ) { return exp( x ); }
void showVector( real * v, uint l ) { for( int i = 0; i < l; i++ ) cout << "v[" << i << "]= " << v << endl; }
Data initData( preal x, preal y, preal z ) { Data d; d.xData = x; d.yData = y; d.zData = z; return d; }
Point3 getpoint( Data data, uint i, uint j ) { Point3 p; return p; }
int main( void ) { Sizes sizes = initSizes( 3, 3 ); Range range = initRange( - 1., 1., - 1., 1.); uint length = sizes.sizeX * sizes.sizeY; preal xData = initX( sizes, range, length ); preal yData = initY( sizes, range, length ); preal zData = initZ( sizes, range, length, genZ1 ); Data teren = initData( xData, yData, zData ); Point3 punkt = getpoint( teren, 1, 1 ); }
|
|
cobra144 Temat założony przez niniejszego użytkownika |
» 2015-12-07 14:20:45 Jeszcze jedno małe pytanko przy kompilacji pokazuje mi się taki błąd "uninitialized local variable 'p' used" czego może być to wina? |
|
carlosmay |
» 2015-12-07 14:30:27 Używasz niezainicjalizowanej zmiennej 'p'. |
|
« 1 » |