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 :

[DEBUTANT] fonction devant retourner un tableau


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Par défaut [DEBUTANT] fonction devant retourner un tableau
    Salut,

    je suis en train de faire une fonction qui doit retourner un tableau de matrice (classe template defini dans BOOST::uBLAS).
    Il s agit d'un tableau dynamique (en rouge dans le code ci-dessous).

    Le probleme est que je ne sais pas quel type donne à ce tableau pour le definir dans "l'entete" de ma fonction et je ne sais pas comment le definir dans mon return en fin de fonction.
    J ai egalement essayer d utiliser la classe vecteur de la bibliotheque standard mais apparement je ne peut pas definir un vecteur de matrice...?

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    matrix<float> decomp_lu(matrix<float> m)
    {
    	matrix<float> *V_results; //pointeur de matrice
    	int dim=m.size1();
    	V_results = new matrix<float>[dim];
    	matrix<float> l(m.size1(), m.size1());
    	cout << "dimension de la matrice soumise au LU :"<<m.size1()<<"\n";
    
    	for(int i=0; i<=m.size1()-2; i=i+1)//calcul de L, l'operation est faite (n-1) fois
    	{
    		//coef à 0 de la matrice L
    		for(int c=0; c<m.size1(); ++ c)
    		for(int d=0; d<m.size2(); ++ d)
    		l(c,d)=0;
    		//coef à 1 sur la diagonale de la matrice L
    		for(int c=0; c<m.size1(); ++ c)
    		l(c,c)=1;
    
    		//calcul des coef non nuls de la matrice L
    		for(int j=i; j<=m.size1()-2; ++ j)
    		l(j+1,i)=-m(j+1,i)/m(i,i);
    		
    		V_results[i]=l;
    
    		cout << "operation numero "<< i <<", L : "<< l <<"\n";
    		m=prod(l, m);
    		cout << "operation numero "<< i <<", U : "<< m <<"\n";
    	}
    	V_results[m.size1()-1]=m;
    	return(m);
    }
    J usqu a present cette fonction ne retourne qu'une matrice, mais j aurai besoin de pouvoir en utiliser 2 par la suite d ou l idee de retourner un tableau de matrice.

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    std::vector<matrix<float> >

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Par défaut
    j ai deja essaye mais cela ne marche pas !

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Août 2006
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2006
    Messages : 84
    Par défaut
    Voilà mon code... j utilise donc pour stocker mes matrices un vector de la bibliotheque standard. La declarartion du vecteur passe au compilateur mais ce qui pose probleme c'est la maniere dont j ecris mon vecteur dans le return ...

    je vous remercie !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include <iostream> 
    #include <vector>
    #include <boost/numeric/ublas/matrix.hpp>
    #include <boost/numeric/ublas/io.hpp>
    using namespace std;
    using namespace boost::numeric::ublas;
     
    std::vector<matrix<float>> decomp_lu(matrix<float> m)
    {
    	//matrix<float> *V_results; //pointeur de matrice
    	//int dim=m.size1();
    	//V_results = new matrix<float>[dim];
     
    	std::vector<matrix<float>> V_results(m.size1());
     
    	matrix<float> l(m.size1(), m.size1());
    	cout << "dimension de la matrice soumise au LU :"<<m.size1()<<"\n";
     
    	for(int i=0; i<=m.size1()-2; i=i+1)//calcul de L, l'operation est faite (n-1) fois
    	{
    		//coef à 0 de la matrice L
    		for(int c=0; c<m.size1(); ++ c)
    		for(int d=0; d<m.size2(); ++ d)
    		l(c,d)=0;
    		//coef à 1 sur la diagonale de la matrice L
    		for(int c=0; c<m.size1(); ++ c)
    		l(c,c)=1;
     
    		if (m(i,i)!=0)
    		{
    		//calcul des coef non nuls de la matrice L
    		for(int j=i; j<=m.size1()-2; ++ j)
    		l(j+1,i)=-m(j+1,i)/m(i,i);
    		}
    		if (m(i,i)==0)
     
    		V_results[i]=l;
     
    		cout << "operation numero "<< i <<", L : "<< l <<"\n";
    		m=prod(l, m);
    		cout << "operation numero "<< i <<", U : "<< m <<"\n";
     
    	}
    	V_results[m.size1()-1]=m;
    	return(V_results[]);
    }

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Deux erreurs :
    - le return avec un [] bizarre
    - manque d'un espace entre > et > (c'est "> >", pas ">>")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/09/2006, 18h17
  2. [debutant] fonction qui retourne une valeur
    Par arnolpourri dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2006, 09h29
  3. Fonction qui retourne un tableau ou 2 variables ? possible ou non
    Par jiojio dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 05/06/2006, 15h00
  4. [VB] Fonction qui retourne un tableau
    Par ptitsoleil87 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/12/2005, 10h52
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06

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