Kezdőlap › Fórumok › Programozás › matrix osztaly osszeadasra
- This topic has 178 hozzászólás, 8 résztvevő, and was last updated 17 years, 4 months telt el by
uzsolt.
-
SzerzőBejegyzés
-
2008-02-27-17:35 #2154759
nyilvan ezt is probaltam mar. ez sem jo… marcsak azert sem, mert nekem csak egy i counter van az egesz programmban…
2008-02-27-17:35 #2154760nyilvan ezt is probaltam mar. ez sem jo… marcsak azert sem, mert nekem csak egy i counter van az egesz programmban…
2008-02-27-17:38 #2154761jules wrote:hat az osszeadas eredmenye egy 3×3-as matrix, ami a „sum”, nalam. de ezt igy nem irathatom ki, hjules wrote:nyilvan ezt is probaltam mar. ez sem jo… marcsak azert sem, mert nekem csak egy i counter van az egesz programmban…Akkor vajon milyen változóval címzed végig a mátrix két dimenzióját…
2008-02-27-17:38 #2154762jules wrote:hat az osszeadas eredmenye egy 3×3-as matrix, ami a „sum”, nalam. de ezt igy nem irathatom ki, hjules wrote:nyilvan ezt is probaltam mar. ez sem jo… marcsak azert sem, mert nekem csak egy i counter van az egesz programmban…Akkor vajon milyen változóval címzed végig a mátrix két dimenzióját…
2008-02-27-17:41 #2154763Nem lehetne, hogy eladod a számítógépet olyannak, aki használni is tudja?
2008-02-27-17:41 #2154764Nem lehetne, hogy eladod a számítógépet olyannak, aki használni is tudja?
2008-02-27-18:17 #2154765Ez igy lefordul, de…
Code:#include
#include
#include
#include
#include#define N 5
using namespace std;
const float M_2PIf = 6.283185307179586476925286766559f;
const float M_PIf = 3.141592653589793238462643383279f;/* —————–RANDOM_GENERATOR——————————- */
float rand(float min, float max)
{
return min + (max – min) * rand() / (float)RAND_MAX;
}
/*——————————————————————*/struct vektor {
float x,y,z;
};/* ——————MATRIX_CLASS———————————–*/
class Matrix {private:
float tomb[3][3];
public:
void init(vektor &a){tomb[0][0] = a.x * a.x;
tomb[0][1] = a.x * a.y;
tomb[0][2] = a.x * a.z;
tomb[1][0] = a.y * a.x;
tomb[1][1] = a.y * a.y;
tomb[1][2] = a.y * a.z;
tomb[2][0] = a.z * a.x;
tomb[2][1] = a.z * a.y;
tomb[2][2] = a.z * a.z;
}Matrix &operator +=(Matrix b){
int k,l;
for(k=0; k<3; k++)
for(l=0; l<3; l++)
tomb[k][l] += b.tomb[k][l];
return *this;
}Matrix &operator/=(float c){
int k,l;
for(k=0; k<3; k++)
for(l=0; l<3; l++)
tomb[k][l] /= c;
return *this;
}};
/* ——————————————————————– */
int main() {
int i,j;
vektor tar[5];
for (i = 0;i<5;i++) {
float phi = rand(0.0f, M_2PIf);
float costheta = rand(-1.0f, 1.0f);
float x = 1.0f * sqrtf(1-costheta*costheta) * cosf(phi);
float y = 1.0f * sqrtf(1-costheta*costheta) * sinf(phi);
float z = 1.0f * costheta;tar[i].x = x;
tar[i].y = y;
tar[i].z = z;}
Matrix m[5];
for (i=0;i<5;i++) {
m[i].init(tar[i]);
}Matrix sum = m[0];
for (i=0;i<5;i++) {
sum += m[i];
}
sum /= N;return 0;
}2008-02-27-18:17 #2154766Ez igy lefordul, de…
Code:#include
#include
#include
#include
#include#define N 5
using namespace std;
const float M_2PIf = 6.283185307179586476925286766559f;
const float M_PIf = 3.141592653589793238462643383279f;/* —————–RANDOM_GENERATOR——————————- */
float rand(float min, float max)
{
return min + (max – min) * rand() / (float)RAND_MAX;
}
/*——————————————————————*/struct vektor {
float x,y,z;
};/* ——————MATRIX_CLASS———————————–*/
class Matrix {private:
float tomb[3][3];
public:
void init(vektor &a){tomb[0][0] = a.x * a.x;
tomb[0][1] = a.x * a.y;
tomb[0][2] = a.x * a.z;
tomb[1][0] = a.y * a.x;
tomb[1][1] = a.y * a.y;
tomb[1][2] = a.y * a.z;
tomb[2][0] = a.z * a.x;
tomb[2][1] = a.z * a.y;
tomb[2][2] = a.z * a.z;
}Matrix &operator +=(Matrix b){
int k,l;
for(k=0; k<3; k++)
for(l=0; l<3; l++)
tomb[k][l] += b.tomb[k][l];
return *this;
}Matrix &operator/=(float c){
int k,l;
for(k=0; k<3; k++)
for(l=0; l<3; l++)
tomb[k][l] /= c;
return *this;
}};
/* ——————————————————————– */
int main() {
int i,j;
vektor tar[5];
for (i = 0;i<5;i++) {
float phi = rand(0.0f, M_2PIf);
float costheta = rand(-1.0f, 1.0f);
float x = 1.0f * sqrtf(1-costheta*costheta) * cosf(phi);
float y = 1.0f * sqrtf(1-costheta*costheta) * sinf(phi);
float z = 1.0f * costheta;tar[i].x = x;
tar[i].y = y;
tar[i].z = z;}
Matrix m[5];
for (i=0;i<5;i++) {
m[i].init(tar[i]);
}Matrix sum = m[0];
for (i=0;i<5;i++) {
sum += m[i];
}
sum /= N;return 0;
}2008-02-27-19:18 #2154767Vigyazat, offolok.
Lassuk, hogyan lehetne egy osztalyban levo tombot kiiratni.1. modszer: Lusta embereknek, es akiket nem zavar hogy ganyolnak, es az objektumok elszigetelesenek az elvet megszegik:
1.a. printf -vel:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
printf( "%f ", objektum.tomb[I][j]);
printf("n");
}
}1.b. cout-al:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << objektum.tomb[I][j] << " ";
std::cout << std::endl;
}
}2. modszer: Mivel ha publikussa tesszuk az adatokat, nincs ertelme osztalyt hasznalni, szoval lassuk hogyan irathatunk ki privat adatokat. Az otlet az, hogy kilon metodust ertelmezunk az osztalyon belul, mely kiirja az adatokat.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
void kiir(void);
};void Valami::kiir(void){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << tomb[I][j] << " ";
std::cout << std::endl;
}
}int main(void){
Valami objektum;
// ….
objektum.kiir();
}3. modszer: Az << operator ujraertelmezese.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
// ez kellenifog
float adjelemet(int i,int j) const {
return tomb[I][j];
}
};// nincs kedvem std:: -t irni sokszor
using namespace std;// ennek a fuggvenynek ismerjuk a parametereit
ostream& operator << (ostream& os, const Valami& s){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
os << s.adjelemet(i,j) << " ";
os << std::endl;
}
return os;
}int main(void){
Valami objektum;
// ….
// kiirhatjuk, mint egy "atlagos" valtozot
cout << objektum;
}2008-02-27-19:18 #2154768Vigyazat, offolok.
Lassuk, hogyan lehetne egy osztalyban levo tombot kiiratni.1. modszer: Lusta embereknek, es akiket nem zavar hogy ganyolnak, es az objektumok elszigetelesenek az elvet megszegik:
1.a. printf -vel:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
printf( "%f ", objektum.tomb[I][j]);
printf("n");
}
}1.b. cout-al:
Code:#includeclass Valami {
public: // << ez most public!
float tomb[3][3];
};
int main(void){
Valami objektum;
// ….int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << objektum.tomb[I][j] << " ";
std::cout << std::endl;
}
}2. modszer: Mivel ha publikussa tesszuk az adatokat, nincs ertelme osztalyt hasznalni, szoval lassuk hogyan irathatunk ki privat adatokat. Az otlet az, hogy kilon metodust ertelmezunk az osztalyon belul, mely kiirja az adatokat.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
void kiir(void);
};void Valami::kiir(void){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
std::cout << tomb[I][j] << " ";
std::cout << std::endl;
}
}int main(void){
Valami objektum;
// ….
objektum.kiir();
}3. modszer: Az << operator ujraertelmezese.
Code:#includeclass Valami {
private:
float tomb[3][3];
public:
// ez kellenifog
float adjelemet(int i,int j) const {
return tomb[I][j];
}
};// nincs kedvem std:: -t irni sokszor
using namespace std;// ennek a fuggvenynek ismerjuk a parametereit
ostream& operator << (ostream& os, const Valami& s){
int i,j;
for( i=0; i<3; i++){
for(j=0; j<3; j++)
os << s.adjelemet(i,j) << " ";
os << std::endl;
}
return os;
}int main(void){
Valami objektum;
// ….
// kiirhatjuk, mint egy "atlagos" valtozot
cout << objektum;
} -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz