cs_anne-lise
Messages postés13Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention30 septembre 2005
-
17 août 2005 à 13:50
soulreaver35
Messages postés16Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention21 juin 2006
-
30 août 2005 à 10:31
Bonjour,
je debute en c++ et j'ai quelques problemes avec les tableaux...
D'abord, y a t'il un moyen d'avoir pour resultat d'une fonction un tableau ? Parce que des declarations de type :
int[][] = mafonction();
ca marche pas
D'autre part, quand on declare une classe, peut on declarer une matrice sans savoir sa taille ?
je voulais quelque chose de type double mat[n][m] avec n et m inconnus ou disons declares dans le constructeur. Pour eviter les problemes de compilation j'ai declare mat** mais voila , au moment de l'initialisation, je ne peux visiblement pas faire :
new double[n][m]
donc pour initialiser la table je passe dans toute la matrice et comme elle sont grosses, je trouve pas ca tres efficace... Est ce que quelqu'un pourrait m'aider a faire quelque chose de plus propre ?
Galmiza
Messages postés573Date d'inscriptionsamedi 16 novembre 2002StatutMembreDernière intervention 9 avril 20081 17 août 2005 à 14:40
C`est purement arbitraire.
Ici j`alloue m pointeurs sur des tableaux, 1 par colonne.
Puis pour chaque colonne j`alloue un tableau de n float (car n est le nombre de ligne).
J`ai fait une boucle sur m = mb colonnes.
On aurait aussi pu allouer n pointeurs sur des tableaux pour les lignes, puis allouer m float par ligne.
Il y a effectivement des bibiotheques pour les matrices.
Mais parfois c`est plus rapide de les refaire plutot que de chercher comment elle fonctionnent.
steve_clamage
Messages postés475Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention11 août 20065 17 août 2005 à 14:51
Oui je suis d'accord tu peux choisir, mais dans un vrai tableau
multidimensionnelle les données sont organisée en ligne et l'indexation
d'une matrice se fais en (ligne, colonne). Il faut garder la meme
sémantique pour un tableau de pointeurs par seprit de modularité.
On est pas obliger d'utiliser une bibliotheque mais si c'est pour refaire autant bien faire les choses.
Un truc dans ce genre la:
#include <valarray>
#include <cstddef>
template <typename Type>
class matrix
{
public:
typedef std::size_t size_type;
...
private:
std::valarray<Type> _data;
size_type _nLines;
size_type _nColumns;
public:
...
pointer operator [] (size_type line)
{
return & data[line * _nColumns];
}
...
};
Vous n’avez pas trouvé la réponse que vous recherchez ?
soulreaver35
Messages postés16Date d'inscriptiondimanche 19 octobre 2003StatutMembreDernière intervention21 juin 2006 30 août 2005 à 10:31
Pour une matrice dynamique en utilisant malloc voici une exemple:
int nbr_l,nbr_c;//nombre de ligne et de colonne
float **Mat
cin>>nbr_l;//lire le nombre de lignes
cin>>nbr_c;//lire le nombre de colonnes
Mat=(float**) malloc(sizeof(float *)*nbr_l);
for(i=0;i<nbr_l;i++)
Mat[i]=(float *) malloc(sizeof(float)*nbr_c);
Ensuite tu peut utiliser la matrice comme toute matrice statique Mais apres il faut la désalouer