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

  FORUM HardWare.fr
  Programmation

  [C/C++] Passage et réception de paramètre avec une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] Passage et réception de paramètre avec une fonction

n°17031
korben
Posté le 05-03-2001 à 12:06:37  profilanswer
 

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é.
@+

mood
Publicité
Posté le 05-03-2001 à 12:06:37  profilanswer
 

n°17034
Toxin
Carpe ★★ Vitam
Posté le 05-03-2001 à 12:21:27  profilanswer
 

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.

n°17035
Willytheki​d
Posté le 05-03-2001 à 12:22:29  profilanswer
 

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 ?


---------------
Si t'es pas net, reste a la buvette
n°17087
minusplus
Posté le 05-03-2001 à 17:17:00  profilanswer
 

Si tu fais du ++, pourquoi ne pas faire de l'objet ?
Aprés tout c'est la grande force du ++, non ?

n°17127
Roswell_
Posté le 05-03-2001 à 20:01:29  profilanswer
 

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.


---------------
http://www.cheata.net le site qui vous donne la banane!
n°17128
BifaceMcLe​OD
The HighGlandeur
Posté le 05-03-2001 à 20:05:21  profilanswer
 

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.

n°17598
korben
Posté le 08-03-2001 à 08:45:42  profilanswer
 

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.
@+

n°17655
Pschitt
Posté le 08-03-2001 à 12:35:29  profilanswer
 

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);
}

n°17656
Toxin
Carpe ★★ Vitam
Posté le 08-03-2001 à 12:44:15  profilanswer
 

Beuaah pour ma part je trouve ça affreux de faire comme ça.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Ma chaîne YT
n°17721
Pschitt
Posté le 08-03-2001 à 17:32:19  profilanswer
 

Toxin explique toi d'avantage  
 
Affreux ça ne me dit pas grand chose ?

mood
Publicité
Posté le 08-03-2001 à 17:32:19  profilanswer
 

n°17726
n0mad
inscrit au XXe siècle
Posté le 08-03-2001 à 17:54:04  profilanswer
 

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.


---------------
Pipiru piru piru pipiru pi
n°17790
korben
Posté le 09-03-2001 à 09:15:44  profilanswer
 

explique toi nomad...

n°17804
Toxin
Carpe ★★ Vitam
Posté le 09-03-2001 à 10:36:38  profilanswer
 

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.


---------------
"If you can walk away from a landing, it's a good landing. If you use the airplane the next day, it's an outstanding landing." - Chuck Yeager. | Ma chaîne YT

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C/C++] Passage et réception de paramètre avec une fonction

 

Sujets relatifs
[ c++ ] besoin d'aide fonction simple !!![ c++ ] besoin d'aide fonction simple !!!
cherche fonction de date en ASP .. 1 peu speciale[c++] paramétre de ligne de commande ?
[C] : Une fonction peut elle renvoyer un tableau ??La fonction "DIR" en visual basic ????
Parser de fonction mathématiques en C++[PERL] fonction de conversion nom long -> nom court DOS
[C++] Fonction min et max??[C++] trier un vector avec une fonction de comparaison
Plus de sujets relatifs à : [C/C++] Passage et réception de paramètre avec une fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR