PDA

View Full Version : سوال: بازگرداندن یک آرایه سه بعدی توسط تابع



Nabege
جمعه 07 تیر 1392, 10:06 صبح
چطوری میشه تابعی ساخت که یک آرایه سه بعدی (مثلا : 11 * 11 * 8) رو برگردونه ؟
دنبال یه راه خیلی سریع میگردم که کمترین استفاده رو از cpu بکنه.

با تشکر

Nabege
جمعه 07 تیر 1392, 14:05 عصر
په کسی جواب نداد ! چی شده ؟

Ananas
جمعه 07 تیر 1392, 14:40 عصر
از اشاره گر استفاده کنید:

struct VEC_3D
{
float x, y, z;
};

VEC_3D * Vec3_UpNormal(VEC_3D * pOut)
{
pOut->x = pOut->y = 0.0f;
pOut->z = 1.0f;
return pOut;
};

VEC_3D * Vec3_Scale(VEC_3D * pOut, VEC_3D * V, flocal S)
{
pOut->x = V->x * S;
pOut->y = V->y * S;
pOut->z = V->z * S;
return pOut;
};

UfnCod3r
جمعه 07 تیر 1392, 15:05 عصر
:متعجب:
تو ب این میگی ارایه 3 بعدی ؟
:متعجب:

omidshaman
جمعه 07 تیر 1392, 16:09 عصر
vector <vector < vector <int> > > makeArray()
{
vector <vector < vector <int> > > Array;
return Array;

}


یا

int*** makeArray()
{
int ***a;
a=new int**[3];
for(int i=0;i<3;i++)
{
a[i]=new int*[6];
for(int j=0;j<6;j++)
a[i][j]=new int[2];
}
return a;
}

Salar Ashgi
جمعه 07 تیر 1392, 22:39 عصر
یه مثال نمونه که همین الان نوشتم :



#include <iostream>
#include <conio>
struct A3D
{
int a[2][3][4];
};
A3D f()
{
A3D obj;
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<4;k++)
{
obj.a[i][j][k] = i+2*j+3*k;
}
}
}
//---------------
return obj;
}
int main(){
A3D p = f();
for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<4;k++)
{
cout<<p.a[i][j][k]<<" ";
}
cout<<endl;
}
cout<<"--------------\n";
}
getch();
}


من با استفاده از Struct اینکارو کردم ، روشهای دیگه هم است ، DArray , ...

اجرا :

106298

Nabege
یک شنبه 09 تیر 1392, 13:34 عصر
میشه بگین سریع ترین راه کدومه ؟ (منظورم کوتاه ترین راه نیست .)