Passage et réception de paramètre avec une fonction [C/C++] - Programmation
Marsh Posté le 05-03-2001 à 12:21:27
Ben le mieux est que tu utilises une fonction en temps que procédure pour cela. Une fonction ne renvoie qu'une seule valeur.
La question est : connais tu la taille des tableaux ou pas dans la fonction ? sinon il faut ajouter un autre paramètre. Combien de tableaux en entrée ?
void func(type tab1, type tab2, type tab3, type& tabres1, type& tabres2, type& tabres3) ;
QQchose comme ça, dans le code tu alloues les tableaux resultats et tu fais les affectations avec les paramètres tabresX.
Marsh Posté le 05-03-2001 à 12:22:29
Salut,
Plusieurs choses. En C++ :
- tu peux pas retourner de tableau en C++ (hein, c'est pas possible ??)
- les fonctions ne retourne toujours qu'un seul resultat
Une possibilite :
- tu cree les 3 tableaux avant d'appeler ta fonction et tu les passes en parametre dans ta fonction en utilisant les references (heu...on va dire references = pointeurs pour simplifier)
- Concernant les tableaux non definie...Qu'est ce que tu appelle non definie ? a quel moment le seront-ils ? parle tu de liste?
L'option des vecteurs est elle envisageable ?
Marsh Posté le 05-03-2001 à 17:17:00
Si tu fais du ++, pourquoi ne pas faire de l'objet ?
Aprés tout c'est la grande force du ++, non ?
Marsh Posté le 05-03-2001 à 20:01:29
utiliser les objets semble la meilleur solution sinon tu peux faire des tableaux de tableaux(cad des pointeurs de pointeurs).
Comme ça t'as qu'un param en entrée (avec éventuellement les tailles) et t'as pas de pb en sortie.
Marsh Posté le 05-03-2001 à 20:05:21
Je vous rappelle qu'en C++ (héritant en cela de C), les tableaux sont assimilés à des pointeurs. Donc pour faire retourner un tableau de tableaux d'entiers, il suffit que la fonction retourne un int** et on peut retourner le tableau sans aucun problème.
Marsh Posté le 08-03-2001 à 08:45:42
Merci à tous. La solution était évidemment de passer un pointeur sur le premier élement du tableau et, si le tableau à plusieurs dimension, de passer un pointeur sur une structure.
@+
Marsh Posté le 08-03-2001 à 12:35:29
Et si tu ne veux pas utiliser de structure pour tes tab. à 2 dimensions(Matrices) tu peux t'inspirer de ce cette fonction qui te permet de créer une matrice, matrice qui est ici en fait un pointeur sur 1 tableau de pointeurs. En créant ta matrice ainsi, tu peux la passer en paramêtres à une fonction sans déclaration globales déconseillées.
int ** allocMatrice(int nbLig, int nbCol)
{
int ** mat;
int * val;
int i;
mat = (int **) malloc(nbLig*sizeof(int *));
if (!mat) return ( (int**)NULL );
val = (int *) malloc(nbLig*nbCol*sizeof(int));
if (!val) return ( (int**)NULL );
for (i=0; i<nbLig; i++)
mat[i] = val + i*nbCol;
return (mat);
}
Marsh Posté le 08-03-2001 à 17:32:19
Toxin explique toi d'avantage
Affreux ça ne me dit pas grand chose ?
Marsh Posté le 08-03-2001 à 17:54:04
Le C++, c'est fait pour faire aussi de l'objet.
Il est tout à fait possible à une fonction de renvoyer un tableau du moment que la classe conteneur du tableau possède un constructeur de copie.
Marsh Posté le 09-03-2001 à 10:36:38
Ce que je ferais (et ça n'engage que moi) c'est de faire un malloc pour le nombre de lignes puis un malloc par ligne.
Si ta matrice a une taille i lignes j colonnes, ça fait donc i+1 malloc.
Marsh Posté le 05-03-2001 à 12:06:37
Salut
J'ai besoin de programmer en C++ une fonction ayant comme paramètre des tableau d'entier de taille définie et me retournant comme paramètre 3 tableaux d'entier à 2 dimensions ayant une taille non définie (?? x 2)
Vous feriez cela comment, pour que cela simple rapide et efficace? Je pensais à un passage d'adresse, mais c'est un peu la merde. Alors? Merci de me répondre rapidement, je suis un peu bloqué.
@+