Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3053 connectés 

 


Dernière réponse
Sujet : [C/C++] Passage et réception de paramètre avec une fonction
Toxin 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.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Toxin 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.
korben explique toi nomad...
n0mad 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.
Pschitt Toxin explique toi d'avantage  
 
Affreux ça ne me dit pas grand chose ?
Toxin Beuaah pour ma part je trouve ça affreux de faire comme ça.
Pschitt 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);
}
korben 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.
@+
BifaceMcLeOD 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.
Roswell_ 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.
minusplus Si tu fais du ++, pourquoi ne pas faire de l'objet ?
Aprés tout c'est la grande force du ++, non ?
Willythekid 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 ?
Toxin 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.
korben 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é.
@+

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)