zoltan22

Hozzászólások

10 bejegyzés megtekintése - 971-980 / 2,516
  • Szerző
    Bejegyzés
  • Hozzászólás: matrix osztaly osszeadasra #2154656
    zoltan22
    Felhasználó

      Szerintem nem fog lefordulni a program. Nekem ugy tunik, neked a c es c++ alapok ujboli attekintese nem artana.

      peldaul: // ez itt egy megjegyes
      Az en (nevetseges) megjegyzeseimet egy az egyben beomlesztetted a programba.

      A Matrix::init ketszer van ertelmezve, mas parameterekkel, raadasul egyszer a main fuggveny kozepen.

      Egyszer egy ‘tar’ nevu tombod van (vektor tar[10]), maskor ‘m’ a tomb neve. Annak ugyanaz kellene legyen a neve.

      A tobbi hibarol majd szol a fordito 🙂

      A kiiratast pedig egy uj metodussal a legegyszerubb elintezni a Matrix osztalyban.

      Hozzászólás: matrix osztaly osszeadasra #2154651
      zoltan22
      Felhasználó

        3×3-as matrixhoz mukodik a „paraszt” modszer is:

        Code:
        void Matrix::init(vektor &a, vektor &b){
        tomb[0][0] = a.x*b.x;
        tomb[1][0] = a.x*b.y;
        tomb[2][0] = a.x*b.z;
        tomb[0][1] = a.y*b.x;
        tomb[1][1] = a.y*b.y;
        tomb[2][1] = a.y*b.z;
        tomb[0][2] = a.z*b.x;
        tomb[1][2] = a.z*b.y;
        tomb[2][2] = a.z*b.z;
        }

        Es ezzel meg is van.

        *mindenfele elgepeles es hibas indexeles joga fenntartva 😀

        Hozzászólás: matrix osztaly osszeadasra #2154652
        zoltan22
        Felhasználó

          3×3-as matrixhoz mukodik a „paraszt” modszer is:

          Code:
          void Matrix::init(vektor &a, vektor &b){
          tomb[0][0] = a.x*b.x;
          tomb[1][0] = a.x*b.y;
          tomb[2][0] = a.x*b.z;
          tomb[0][1] = a.y*b.x;
          tomb[1][1] = a.y*b.y;
          tomb[2][1] = a.y*b.z;
          tomb[0][2] = a.z*b.x;
          tomb[1][2] = a.z*b.y;
          tomb[2][2] = a.z*b.z;
          }

          Es ezzel meg is van.

          *mindenfele elgepeles es hibas indexeles joga fenntartva 😀

          Hozzászólás: matrix osztaly osszeadasra #2154645
          zoltan22
          Felhasználó

            Ahogy elnezem, minimum 2 vektor kell hozza. Hogy 3×3-ast kapj, kell egy 3×1-es es egy 1×3-as matrix.

            Ha jol latom errol van szo:
            http://en.wikipedia.org/wiki/Tensor_product
            http://en.wikipedia.org/wiki/Kronecker_product

            A masodik link alapjan konnyu rajonni a logikajara 😉

            Hozzászólás: matrix osztaly osszeadasra #2154646
            zoltan22
            Felhasználó

              Ahogy elnezem, minimum 2 vektor kell hozza. Hogy 3×3-ast kapj, kell egy 3×1-es es egy 1×3-as matrix.

              Ha jol latom errol van szo:
              http://en.wikipedia.org/wiki/Tensor_product
              http://en.wikipedia.org/wiki/Kronecker_product

              A masodik link alapjan konnyu rajonni a logikajara 😉

              Hozzászólás: matrix osztaly osszeadasra #2154641
              zoltan22
              Felhasználó

                Amiket irtal szerintem egyszeru dolgok. A Matrix osztalyodat szerintem tulaltalanositottad (avagy agyuval a verebre).

                Amire szukseged lenne (szerintem):
                – a fuggveny, amivel a vektorokbol matrixot allit elo: ez lehetne a matrix metodusa
                – osszeadasi mulvelet 2 matrix kozott
                – matrix osztasa skalarral

                Vazolom kodban:

                Code:
                struct vektor {
                float x,y,z;
                };

                class Matrix3x3 {
                private:
                float tomb[3][3]; // minek vacakolni?

                public:
                void init(vektor a, vektor b){
                  // itt feltoltod a ‘tomb’-ot
                }
                Matrix3x3 &operator +=(Matrix3x3 b){ // osszeadas
                int x,y;
                for(x=0; x<3; x++)
                for(y=0; y<3; y++)
                  tomb[x][y] += b.tomb[x][y];
                return *this;
                }
                Matrix3x3 &operator/=(float c){ // osztas skalarral
                int x,y;
                for(x=0; x<3; x++)
                for(y=0; y<3; y++)
                  tomb[x][y] /= c;
                return *this;
                }
                };

                A hasznalat valami ilyesmi lehetne:

                Code:
                vektor valami[10]; // ott vannak a vektoraink, feltoltve
                Matrix m[10]; // matrixok
                for(i=0; i<n; i++)
                m[I].init(valami[I]; // minden vektor atalakitva
                Matrix osszeg = m[0];
                for(i=1; i<n; i++)
                osszeg += m[I];
                m /= egy_szam;
                // most m-ben megvan ami kell neked
                Hozzászólás: matrix osztaly osszeadasra #2154642
                zoltan22
                Felhasználó

                  Amiket irtal szerintem egyszeru dolgok. A Matrix osztalyodat szerintem tulaltalanositottad (avagy agyuval a verebre).

                  Amire szukseged lenne (szerintem):
                  – a fuggveny, amivel a vektorokbol matrixot allit elo: ez lehetne a matrix metodusa
                  – osszeadasi mulvelet 2 matrix kozott
                  – matrix osztasa skalarral

                  Vazolom kodban:

                  Code:
                  struct vektor {
                  float x,y,z;
                  };

                  class Matrix3x3 {
                  private:
                  float tomb[3][3]; // minek vacakolni?

                  public:
                  void init(vektor a, vektor b){
                    // itt feltoltod a ‘tomb’-ot
                  }
                  Matrix3x3 &operator +=(Matrix3x3 b){ // osszeadas
                  int x,y;
                  for(x=0; x<3; x++)
                  for(y=0; y<3; y++)
                    tomb[x][y] += b.tomb[x][y];
                  return *this;
                  }
                  Matrix3x3 &operator/=(float c){ // osztas skalarral
                  int x,y;
                  for(x=0; x<3; x++)
                  for(y=0; y<3; y++)
                    tomb[x][y] /= c;
                  return *this;
                  }
                  };

                  A hasznalat valami ilyesmi lehetne:

                  Code:
                  vektor valami[10]; // ott vannak a vektoraink, feltoltve
                  Matrix m[10]; // matrixok
                  for(i=0; i<n; i++)
                  m[I].init(valami[I]; // minden vektor atalakitva
                  Matrix osszeg = m[0];
                  for(i=1; i<n; i++)
                  osszeg += m[I];
                  m /= egy_szam;
                  // most m-ben megvan ami kell neked
                  Hozzászólás: Ubuntu Linux telepítés #2010186
                  zoltan22
                  Felhasználó

                    Latom megeloztetek, de most mar elkuldom a valaszomat en is 🙂

                    1. engedelyezed az „universe” tarolot ( rendszer -> adminisztracio -> szoftverforrasok, ubuntu szoftverek lap: kozossegi karbantartasu szoftverek (universe) bepipal
                    2. telepited a stellarium-ot csomagbol
                    pl.
                    apt-get update
                    apt-get install stellarium

                    Hozzászólás: matrix osztaly osszeadasra #2154633
                    zoltan22
                    Felhasználó
                      vizsla wrote:
                      Ez az std::vector is pl. egy rand. iterátorral felszerelt tároló, inkább, mint műveletvégző. Ilyen 10-es, esetleg 100-as nagyságrendű elemszámnál, még elmegy, de afölött már kínlódás használni. Ráadásul nem több dimenziós műveletekhez készült, így eleve „át” kell írni.
                      Szóval egyszerűbb írni egyet, ami lineárisan (egy mutatóval – nem iterátorral – elérhetően) tárolja (mint, ahogy vázoltam). Annál is inkább, mert elemek közbeszúrására itt nem igazán van szükség.

                      Nem a matrix implementalasara gondoltam, hanem tobb matrix tarolasara. 🙂

                      Code:
                      #include

                      template
                      class Matrix {
                      // …..
                      };

                      int main(void){

                      std::vector < Matrix > c; // c-ben tarthatunk tobb matrixot

                      }

                      Hozzászólás: matrix osztaly osszeadasra #2154634
                      zoltan22
                      Felhasználó
                        vizsla wrote:
                        Ez az std::vector is pl. egy rand. iterátorral felszerelt tároló, inkább, mint műveletvégző. Ilyen 10-es, esetleg 100-as nagyságrendű elemszámnál, még elmegy, de afölött már kínlódás használni. Ráadásul nem több dimenziós műveletekhez készült, így eleve „át” kell írni.
                        Szóval egyszerűbb írni egyet, ami lineárisan (egy mutatóval – nem iterátorral – elérhetően) tárolja (mint, ahogy vázoltam). Annál is inkább, mert elemek közbeszúrására itt nem igazán van szükség.

                        Nem a matrix implementalasara gondoltam, hanem tobb matrix tarolasara. 🙂

                        Code:
                        #include

                        template
                        class Matrix {
                        // …..
                        };

                        int main(void){

                        std::vector < Matrix > c; // c-ben tarthatunk tobb matrixot

                        }

                      10 bejegyzés megtekintése - 971-980 / 2,516