IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

'=' : cannot convert from 'const double' to 'double *'


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Inscrit en
    Novembre 2006
    Messages
    304
    D�tails du profil
    Informations personnelles :
    �ge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Par d�faut '=' : cannot convert from 'const double' to 'double *'
    Bonjour,
    Donc voila j'ai une fonction memebre id() matrice identit�
    Mais j'arrive plus a la d�finir :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Matrice::id()
    {
    	int i;
    	int dim = nb_lignes()*nb_lignes();
    	for(i=0;i<dim;i++)
    		lignes[i] = 0;
    	for(i=0;i<nb_lignes();i++)
    		lignes[i*nb_lignes()+i] = 1.0;}
    il n'accepte pas 1.0 ni A alors que 0 oui Prq ?
    sachant que ma matrice est sous la forme :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Matrice
    {
       private:
          typedef double *ligne;
          ligne *lignes;
          unsigned int n; 
          unsigned int m; 
               //
    Public :
    //
    unsigned int nb_colones() const;
          unsigned int nb_lignes() const;
    Pourriez vous m'aidez !

  2. #2
    Membre �m�rite
    Inscrit en
    Janvier 2005
    Messages
    711
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par d�faut
    le message est clair ! lignes est un pointeur de pointeur, autrement dit un tableau a 2 dimension. donc :

    - il faut bien penser a l'initialiser proprement avec l'operateur new
    - il faut l'utiliser comme un tableau double, donc lignes[i][j]=0.1

    [edit]
    en fait, au vu de ton code, tu utilises ligne comme un tableau a une dimension deliberement. dans ce cas, c'est la definition qu'il faut changer :

    sans * :-)

  3. #3
    Membre �prouv� Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par d�faut
    A mon avis c'est qu'il s'est tromp� dans son code "id"

    La solution :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Matrice::id()
    {
    	int i,j;
     
    	for(i=0;i<nb_lignes();i++){
    	   for(j=0;j<nb_lignes();j++){
    		lignes[i][j] = 0;
                }
    	    // l'identité
    	    lignes[i][i] = 1.0;
            }
    }

  4. #4
    Membre �m�rite
    Inscrit en
    Janvier 2005
    Messages
    711
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par d�faut
    Citation Envoy� par galak63
    A mon avis c'est qu'il s'est tromp� dans son code "id"
    pas forcement, comme je le signale dans mon [edit], il a peut etre deliberement choisi pour des raisons de performances de travailler avec un tableau en une dmension, et que le sreste du code (qu'on ne voit pas) est en conformit� avec cette idee. dans ce cas, il suffit de changer la declaration de "lignes".

  5. #5
    Membre �prouv� Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par d�faut
    Pas faux, � lui ou elle de nous d�partager ...

    PS : si il ou elle avait fait cette erreur, je pense que ce n'�tait pas par souci de performance

  6. #6
    Membre �m�rite
    Inscrit en
    Janvier 2005
    Messages
    711
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par d�faut
    je ne parlais pas de son erreur, mais du fait d'utiliser un tableau unidimensionnelle. pour l'erreur en elle meme ca peut etre une etourderie, que celui a qui ca n'est jamais arriv� me jette la premiere pierre

  7. #7
    Membre �clair�
    Inscrit en
    Novembre 2006
    Messages
    304
    D�tails du profil
    Informations personnelles :
    �ge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 304
    Par d�faut
    Bonjour, merci pour la r�ponse?

    j'ai une fonction orthogonale qui returne 0 ou 1 selon si la fonction est orthogonale ou non (si le produit de la matrice et son transpose est egal a l'identite alors la matrice est orthogonale)

    voila ce que j'ai fait mais ca ne marche pas !
    id() : matrice identite

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    bool Matrice::orthogonale()
    {
    	Matrice t(m,n);
    	t.transpose();
    	if(t*t.transpose()==id()) 
    		return false;
    	else
    		return true;
    }
    Maria

Discussions similaires

  1. R�ponses: 2
    Dernier message: 26/03/2015, 10h57
  2. R�ponses: 3
    Dernier message: 03/10/2012, 11h45
  3. R�ponses: 3
    Dernier message: 29/01/2007, 13h39
  4. Type mismatch: cannot convert from Integer to int
    Par littleb dans le forum Eclipse Java
    R�ponses: 8
    Dernier message: 16/10/2006, 22h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo