matrix osztaly osszeadasra

Kezdőlap Fórumok Programozás matrix osztaly osszeadasra

10 bejegyzés megtekintése - 141-150 / 179
  • Szerző
    Bejegyzés
  • #2154759
    jules
    Felhasználó

      nyilvan ezt is probaltam mar. ez sem jo… marcsak azert sem, mert nekem csak egy i counter van az egesz programmban…

      #2154760
      jules
      Felhasználó

        nyilvan ezt is probaltam mar. ez sem jo… marcsak azert sem, mert nekem csak egy i counter van az egesz programmban…

        #2154761
        kisbetu
        Felhasználó
          jules wrote:
          hat az osszeadas eredmenye egy 3×3-as matrix, ami a „sum”, nalam. de ezt igy nem irathatom ki, h

          jules 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…

          #2154762
          kisbetu
          Felhasználó
            jules wrote:
            hat az osszeadas eredmenye egy 3×3-as matrix, ami a „sum”, nalam. de ezt igy nem irathatom ki, h

            jules 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…

            #2154763
            kisbetu
            Felhasználó

              Nem lehetne, hogy eladod a számítógépet olyannak, aki használni is tudja?

              #2154764
              kisbetu
              Felhasználó

                Nem lehetne, hogy eladod a számítógépet olyannak, aki használni is tudja?

                #2154765
                jules
                Felhasználó

                  Ez igy lefordul, de…39.gif 

                  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;
                  }

                  #2154766
                  jules
                  Felhasználó

                    Ez igy lefordul, de…39.gif 

                    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;
                    }

                    #2154767
                    zoltan22
                    Felhasználó

                      Vigyazat, 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:
                      #include

                      class 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:
                      #include

                      class 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:
                      #include

                      class 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:
                      #include

                      class 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;
                      }

                      #2154768
                      zoltan22
                      Felhasználó

                        Vigyazat, 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:
                        #include

                        class 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:
                        #include

                        class 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:
                        #include

                        class 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:
                        #include

                        class 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;
                        }

                      10 bejegyzés megtekintése - 141-150 / 179
                      • Be kell jelentkezni a hozzászóláshoz.