begin process at 2012 05 28 20:31:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

[DEPLACE --> CPP] correction errors


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[DEPLACE --> CPP] correction errors

dimanche 2 novembre 2008 à 15:02:12 | [DEPLACE --> CPP] correction errors

nour_ops

voici le code en c++
/*
  Copyright (c) 2008 Eric Sauser,
  LASA Lab, EPFL, CH-1015 Lausanne, Switzerland,
  http://lasa.epfl.ch
*/

#ifndef VECTOR_H
#define VECTOR_H

#include "Macros.h"
#include <math.h>
#include <iostream>

#ifndef NULL
#define NULL 0
#endif

#ifdef  USE_T_EXTENSIONS
template<unsigned int ROW> class TVector;
#endif

class Vector
{
  friend class Matrix;
#ifdef  USE_T_EXTENSIONS  
  template<unsigned int ROW> friend class TVector;  
#endif
  
protected:
  static  float undef;
  
          unsigned int   row;
        float         *_;

public:

  
inline Vector() {
    row = 0;
    _   = NULL;
  }
  
  inline virtual ~Vector(){
    Release();
  }

  inline Vector(const Vector &vector)
  {
    row = 0;
    _   = NULL;
    Resize(vector.row,false);
    for (unsigned int i = 0; i < row; i++)
      _[i] = vector._[i];
  }







Jamal Kharroubi, Gérard Chollet
ENST-TSI,  CNRS-LTCI
46 rue Barrault –  75634 Paris Cedex 13, France
Tél.: ++33 (0)1 45 81 75 62 - Fax: ++33 (0)1 45 88 79 35
Mél: kharroub, chollet@tsi.enst.fr - http://www.tsi.enst.fr

  inline Vector(unsigned int size, bool clear = true)
  {
    row = 0;
    _   = NULL;
    Resize(size,false);
    if(clear)
      Zero();
  }
  
inline Vector(const float _[], unsigned int size)
{
    row       = 0;
    this->_   = NULL;
    Resize(size,false);
for (unsigned int i = 0; i < row; i++)
this->_[i] = _[i];
}
  
#ifdef  USE_T_EXTENSIONS
  template<unsigned int ROW> inline Vector(const TVector<ROW> &vector)
  {
    row = 0;
    _   = NULL;
    Resize(ROW,false);
    for (unsigned int i = 0; i < row; i++)
      _[i] = vector._[i];        
  }
#endif    
  
  inline Vector& Zero()
  {
    for (unsigned int i = 0; i < row; i++)
      _[i] = 0.0f;
    return *this;    
  }

  inline Vector& One()
  {
    for (unsigned int i = 0; i < row; i++)
      _[i] = 1.0f;
    return *this;    
  }

  inline Vector& Random(){
    for (unsigned int j = 0; j < row; j++)
      _[j] =((float)rand())/((float)(RAND_MAX+1.0));    
    return *this;    
  }
    
  inline unsigned int Size() const{
    return row;
  }
  
  inline float *GetArray() const{
    return _;
  }
  
  inline float& operator[] (const unsigned int row)
  {
    if(row<this->row)
      return _[row];
    return undef;
  }
  
  inline float& operator() (const unsigned int row)
  {
    if(row<this->row)
      return _[row];
    return undef;
  }
  
inline Vector operator - () const
{
Vector result(row,false);
for (unsigned int i = 0; i < row; i++)
result._[i] = -_[i];
    return result;
}
  
  inline Vector& Set(const Vector &vector){
    return (*this)=vector;  
  }
  
  inline Vector& operator = (const Vector &vector)
  {
    Resize(vector.row,false);
    const unsigned int k = (row<=vector.row?row:vector.row);
    for (unsigned int i = 0; i < k; i++)
      _[i] = vector._[i];
    for (unsigned int i = k; i < row; i++)
      _[i] = 0;
    return *this;    
  }
  
inline Vector& operator += (const Vector &vector)
{
    const unsigned int k = (row<=vector.row?row:vector.row);
for (unsigned int i = 0; i < k; i++)
_[i] += vector._[i];
    return *this;
}

inline Vector& operator -= (const Vector &vector)
{
    const unsigned int k = (row<=vector.row?row:vector.row);
for (unsigned int i = 0; i < k; i++)
_[i] -= vector._[i];
    return *this;
}

  inline Vector& operator ^= (const Vector &vector)
  {
    const unsigned int k = (row<=vector.row?row:vector.row);
    for (unsigned int i = 0; i < k; i++)
      _[i] *= vector._[i];
    return *this;
  }

  inline Vector& operator /= (const Vector &vector)
  {
    const unsigned int k = (row<=vector.row?row:vector.row);
    for (unsigned int i = 0; i < k; i++)
      _[i] /= vector._[i];
    return *this;
  }

  inline Vector& operator += (float scalar)
  {
    for (unsigned int i = 0; i < row; i++)
      _[i] += scalar;
    return *this;
  }

  inline Vector& operator -= (float scalar)
  {
    for (unsigned int i = 0; i < row; i++)
      _[i] -= scalar;
    return *this;
  }

inline Vector& operator *= (float scalar)
{
for (unsigned int i = 0; i < row; i++)
_[i] *= scalar;
    return *this;
}

inline Vector& operator /= (float scalar)
{
scalar = 1.0f / scalar;
for (unsigned int i = 0; i < row; i++)
_[i] *= scalar;
    return *this;
}

  inline Vector operator + (const Vector &vector) const
  {
    Vector result(row,false);
    return Add(vector,result);    
  }
  
  inline Vector& Add(const Vector &vector, Vector& result) const
  {  
    result.Resize(row,false);
    const unsigned int k = (row<=vector.row?row:vector.row);
    for (unsigned int i = 0; i < k; i++)
      result._[i] = _[i] + vector._[i];
    for (unsigned int i = k; i < row; i++)
      result._[i] = _[i];      
    return result;
  }

  inline Vector operator - (const Vector &vector) const
  {
    Vector result(row,false);
    return Sub(vector,result);    
  }
  
  inline Vector& Sub(const Vector &vector, Vector& result) const
  {
    result.Resize(row,false);
    const unsigned int k = (row<=vector.row?row:vector.row);
    for (unsigned int i = 0; i < k; i++)
      result._[i] = _[i] - vector._[i];
    for (unsigned int i = k; i < row; i++)
      result._[i] = _[i];      
    return result;
  }

  inline Vector operator ^ (const Vector &vector) const
  {
    Vector result(row,false);
    return PMult(vector,result);    
  }
  
  inline Vector& PMult(const Vector &vector, Vector& result) const
  {  
    result.Resize(row,false);
    const unsigned int k = (row<=vector.row?row:vector.row);
    for (unsigned int i = 0; i < k; i++)
      result._[i] = _[i] * vector._[i];
    for (unsigned int i = k; i < row; i++)
      result._[i] = _[i];      
    return result;
  }

  inline Vector operator / (const Vector &vector) const
  {
    Vector result(row,false);
    return PDiv(vector,result);    
  }
  
  inline Vector& PDiv(const Vector &vector, Vector& result) const
  {
    result.Resize(row,false);
    const unsigned int k = (row<=vector.row?row:vector.row);
    for (unsigned int i = 0; i < k; i++)
      result._[i] = _[i] / vector._[i];
    for (unsigned int i = k; i < row; i++)
      result._[i] = _[i];      
    return result;
  }

  inline float operator * (const Vector &vector) const
  {
    return this->Dot(vector);  
  }
  
  inline Vector operator + (float scalar) const
  {
    Vector result(row,false);
    return Add(scalar,result);    
  }
  
  inline Vector& Add(float scalar, Vector& result) const
  {
    result.Resize(row,false);
    for (unsigned int i = 0; i < row; i++)
      result._[i] = _[i] + scalar;
    return result;
  }

  inline Vector operator - (float scalar) const
  {
    Vector result(row,false);
    return Sub(scalar,result);    
  }
  
  inline Vector& Sub(float scalar, Vector& result) const
  {
    result.Resize(row,false);
    for (unsigned int i = 0; i < row; i++)
      result._[i] = _[i] - scalar;
    return result;
  }

  inline Vector operator * (float scalar) const
  {
    Vector result(row,false);
    return Mult(scalar,result);    
  }
  
  inline Vector& Mult(float scalar, Vector& result) const
  {
    result.Resize(row,false);
    for (unsigned int i = 0; i < row; i++)
      result._[i] = _[i] * scalar;
    return result;
  }

  inline Vector operator / (float scalar) const
  {
    Vector result(row,false);
    return Div(scalar,result);    
  }
  
  inline Vector& Div(float scalar, Vector& result) const
  {
    result.Resize(row,false);
    scalar = 1.0f/scalar;
    for (unsigned int i = 0; i < row; i++)
      result._[i] = _[i] * scalar;
    return result;
  }

  inline bool operator == (const Vector& vector) const
  {
    if(row!=vector.row) return false;
    for (unsigned int i = 0; i < row; i++)
      if(_[i] != vector._[i]) return false;
    return true;
  }

  inline bool operator != (const Vector& vector) const
  {
    return !(*this ==  vector);
  }


  inline float Sum() const
  {
    float result = 0.0f;
    for (unsigned int i = 0; i < row; i++)
      result += _[i];
    return result;
  }

  inline float Norm() const
  {
    return sqrtf(Norm2());
  }

  inline float Norm2() const
  {
    float result = 0.0f;
    for (unsigned int i = 0; i < row; i++)
      result += _[i]*_[i];
    return result;
  }

inline void Normalize()
{
float scalar = 1.0f / Norm();
    (*this)*=scalar;
}
  
  inline float Distance(const Vector &vector) const
  {
    return (*this-vector).Norm();
  }
  
  inline float Distance2(const Vector &vector) const
  {
    return (*this-vector).Norm2();  
  }

  inline float Dot(const Vector &vector) const
  {
    const unsigned int k = (row<=vector.row?row:vector.row);
    float result = 0.0f;
    for (unsigned int i = 0; i < k; i++)
      result += _[i]*vector._[i];
    return result;    
  }

  inline Vector& SetSubVector(unsigned int startPos, const Vector &vector)
  {
    if(startPos<row){
      const unsigned int k = (row-startPos<=vector.row?row-startPos:vector.row);
      for (unsigned int i = 0; i < k; i++){
        _[startPos+i] = vector._[i];  
      }
    }
    return *this;  
  }

  inline Vector GetSubVector(unsigned int startPos, unsigned int len)
  {
    Vector result(len,false);
    return GetSubVector(startPos,len,result);
  }
  

  inline Vector& GetSubVector(unsigned int startPos, unsigned int len, Vector &result)
  {
    result.Resize(len,false);    
    if(startPos<row){
      const unsigned int k = (row-startPos<=len?row-startPos:len);
      for (unsigned int i = 0; i < k; i++){
        result[i] = _[startPos+i];
      }
      for (unsigned int i = k; i < len; i++){
        result[i] = 0.0f;
      }
      
    }else{
      result.Zero();  
    }
    return result;  
  }

  inline float Max(){
    if(row==0)
      return 0.0f;
      
    float res=_[0];
    for(unsigned int i=1;i<row;i++){
      if(_[i]>res) res = _[i];  
    }
    return res;
  }

  inline int MaxId(){
    if(row==0)
      return -1;
      
    float mx  = _[0];
    int   res = 0;
    for(unsigned int i=1;i<row;i++){
      if(_[i]>mx){ mx = _[i]; res = i;}  
    }
    return res;
  }

  inline Vector Abs(){
    Vector result(row);
    return Abs(result);
  }

  inline Vector& Abs(Vector &result) const{
    result.Resize(row,false);
    for(unsigned int i=0;i<row;i++){
      result._[i] = fabs(_[i]);
    }
    return result;
  }

  inline Vector& GetSubVector(const Vector &ids, Vector &result) const
  {
    const unsigned int k=ids.Size();
    result.Resize(k);
    for(unsigned int i=0;i<k;i++){
      const unsigned int g = (unsigned int)(fabs(ROUND(ids._[i])));
      if(g<row){
        result._[i] = _[g];
      }else{
        result._[i] = 0.0f;
      }
    }
    return result;    
  }


  void Print() const
  {
    std::cout << "Vector " <<row<<std::endl;;
    for (unsigned int i = 0; i < row; i++)
      std::cout << _[i] <<" ";
    std::cout << std::endl;
  }
  

protected:
    inline void Release(){
    if(_!=NULL) delete [] _;
    row = 0;
    _   = NULL;
  }  
public:  
  inline virtual void Resize(unsigned int size, bool copy = true){
    if(row!=size){
      if(size){
        float *arr = new float[size];
        if(copy){
          unsigned int m = (row<size?row:size);
          for(unsigned int i=0; i<m; i++)
            arr[i] = _[i];
          for(unsigned int i=m; i<size; i++)
            arr[i] = 0.0f;
        }
        if(_!=NULL) delete [] _;
        _   = arr;
        row = size;        
      }else{
        Release();
      }
    }
  }
};

#endif


j'ai besoin d'aide losque je compille le programme j'ai l'erreur suivant



--------------------Configuration: main - Win32 Debug--------------------
Compiling...
main.cpp
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\macros.h(61) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\macros.h(64) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(145) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(143) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(223) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(221) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(240) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(238) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(257) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(255) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(274) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(272) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(427) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(424) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(513) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\vector.h(511) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\main.cpp(53) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\main.cpp(39) : see declaration of 'i'
c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\main.cpp(74) : error C2374: 'i' : redefinition; multiple initialization
        c:\program files\microsoft visual studio\myprojects\gmm-gmr\gmm-gmr\src\main.cpp(39) : see declaration of 'i'
Error executing cl.exe.

main.exe - 9 error(s), 2 warning(s)

j'ai besoin d'aide pour corriger cette erreur
lundi 29 décembre 2008 à 11:05:55 | Re : [DEPLACE --> CPP] correction errors

exar

Membre Club
Très étrange, il compile chez moi avec Dev-C++...


Cette discussion est classée dans : int, vector, row, gmm, gmr


Répondre à ce message

Sujets en rapport avec ce message

probleme SKD [ par Arnaud16022 ] helloje suis sur VC6 et je voudrais charger des modeles md2 sous openGL. que faire? Évidemment un petit tour chez Digiben!! (bon je sais qu'il existe Vector, template et iterator ... [ par Alela ] Bonjour,j'aimerais faire ceci :#include #include #include #include using namespace std;template void Afficher(vector&l probleme de vecteur static [ par hisoka56 ] bonjour, je suis en train de réaliser un moteur 3d pour un jeu et je bloque sur un petit point:j'ai fait un module de chargement de model (ASE) que je tri d'un tableau avec Qt [ par anouerensi ] Salut, s'il vous plait aidez moi a trouver une solution pour acceder aux éléments de ce tableau afin de le trier en utilisant la methode de tri Shell. Pb de destructeur [ par Stubbornman ] Salut a tous, j'ai un pb de destructeur que je n'arrive pas a resoudre: Mon constructeur: template inline Matrix::Matrix( int row, int column ) Pointeur de Vecteur [ par lesgwenos ] Bonjour à tous, J'ai un petit problème, je ne sais pas initialiser un pointer de vector(de vector de pointer...). Je travaille sur un code pour cons matrice et vecteur [ par memoireph ] salut tous le monde je sollicite votre aide sur un problème voilà,j'ai deux classe vecteur et Matrice que je doit faire avec des opération élémentai Multiplication matrice [Matrice c++] [ par joshua69 ] Bonjour, je dois réaliser un algorithme utilisant la méthode de Cholesky pour la décomposition en matrice L.Lt. voici mon code: #include #include POO: classe et heritage [ par eishtein ] bonjour les gars; Bon voilà, j'ai les deux classes suivantes: [code=cpp] class fraction { public: fraction(int=0,int=1);


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales