| 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 » |