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

  FORUM HardWare.fr
  Programmation

  [C++] Besoin d'aide sur un return ... niveau debutant :)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Besoin d'aide sur un return ... niveau debutant :)

n°119694
BFRRedox
Nine Sisters
Posté le 01-04-2002 à 00:03:14  profilanswer
 

Salut, j'ai un problème tout bête sur C++ ...
 
simplement, en utilisant une fonction "charger", elle retourne 3 valeurs
 
ex :  
int charger()
{
...
return a,b,c ;
}
 
avec a,b et c 3 int evidement
 
comment puis-je faire pour les recupérer individuellement par la suite?
 
c a d : j'appelle dans mon main :
charger();
et pour recup? :)
si je fais int x = charger(); , x prends uniquement la valeur du dernier int retourné, c'est à dire "c"
 
 
merci d'avance
 
@+


---------------
...You'll be perfect just like me...
mood
Publicité
Posté le 01-04-2002 à 00:03:14  profilanswer
 

n°119698
verdoux
And I'm still waiting
Posté le 01-04-2002 à 00:21:55  profilanswer
 

oola !

n°119702
youdontcar​e
Posté le 01-04-2002 à 00:27:39  profilanswer
 

tu ne peux retourner qu'un entier ou un pointeur.
 
dans ta fonction, tu peux utiliser le passage par référence pour 'renvoyer' tes variables, puis renvoyer un bool pour savoir si le chargement s'est bien passé.
 
bool charger(int& a, int& b, int& c)
{
  if (erreurquelconque ...) return false;
  a = 1; b = 2; c = 3;
  return true;
}
 
...
 
int a, b, c;
bool b = charger();

n°119712
HappyHarry
Posté le 01-04-2002 à 00:44:32  profilanswer
 

g juste une ptite question toute bete ... t'as lu la doc avant de commencer ???

n°119768
BFRRedox
Nine Sisters
Posté le 01-04-2002 à 11:42:59  profilanswer
 

merci pour ton aide youdontcare...  :jap:  
 
oui, Harry, j'avais lu la doc, ca fait un petit moment que je fais du c++, c juste que j'avais jamais pensé a cette possibilité de retourner plusieurs données par return ...
cette idée lumineuse m'a frappé hier a minuit, et vu que ca compilait, j'ai eu un instant l'espoir que ca fonctionnerait  :pt1cable:  
 
sinon, j'avais pensé à retourner une map (ou vector) contenant mes données pour les recupérer, mais c moins pratique...

 

[jfdsdjhfuetppo]--Message édité par BFRRedox--[/jfdsdjhfuetppo]


---------------
...You'll be perfect just like me...
n°119785
youdontcar​e
Posté le 01-04-2002 à 12:17:47  profilanswer
 

>> vu que ca compilait
 
c'est du C standard, le compilo évalue les expressions les unes après les autres.
 
l'intérêt de la virgule dans un return est de compacter le code (après on aime ou on n'aime pas).
 
// version 'standard'
 
bool myFunc(int param)
{
  if (param)
  {
    doThis();
    return true;
  }
  else
  {
    doThat(param);
    return false;
  }
}
 
// version virgule
 
bool myFunc(int param)
{
  if (param)  return doThis(), true;
  else        return doThat(param), false;
}

n°119795
Jar Jar
Intaigriste
Posté le 01-04-2002 à 12:34:10  profilanswer
 

Et en plus compact :
return param?(doThis(),true):(doThat,false);
 
(bordel de smilies de merde)


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°119823
youdontcar​e
Posté le 01-04-2002 à 13:54:44  profilanswer
 

effectivement :D

n°119832
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 01-04-2002 à 14:24:34  profilanswer
 

BFRRedox a écrit a écrit :

Salut, j'ai un problème tout bête sur C++ ...
 
simplement, en utilisant une fonction "charger", elle retourne 3 valeurs
 
ex :  
int charger()
{
...
return a,b,c ;
}
 
avec a,b et c 3 int evidement
 
comment puis-je faire pour les recupérer individuellement par la suite?
 
c a d : j'appelle dans mon main :
charger();
et pour recup? :)
si je fais int x = charger(); , x prends uniquement la valeur du dernier int retourné, c'est à dire "c"




 
C'est pas logique ce que tu veux faire : comment veux tu faire "tenir" 3 entiers dans un seul ?  
Pour ton problème, je te conseille de lire un bon bouquin de C++, particulièrement le chapitre sur les tableaux.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°119878
Eniac
Da Mourfis' King
Posté le 01-04-2002 à 17:42:03  profilanswer
 

BFRRedox a écrit a écrit :

Salut, j'ai un problème tout bête sur C++ ...
 
simplement, en utilisant une fonction "charger", elle retourne 3 valeurs




 
je suis juste un chouilla moins débutant que toi, mais ce que je sais, c'est que si tu utilises "return", ça ne marche qu'avec une seule valeur (int, float,double...)
tu as deux solutions :
- ou bien tu crées un tableau de 3 cases dans lequel tu fourres tes trois entiers, et tu dis à ta fonction de retourner le tableau (et non pas les trois valeurs).
- ou bien tu utilises les pointeurs ; il n'y aura plus de commande "return" proprement dite dans ta fonction.  Les pointeurs c'est un peu hard à capter au départ mais une fois que tu as compris, tu pourras plus t'en passer :)  Ainsi,
 
 
main()
{     int a,b,c ;  
      void charger(int x, int y, int z) ;
      charger(&a,&b,&c) ;
      ...=a ;
      ...=b ;
      ...=c ;
}
 
 
void charger(int *x, int *y, int *z)  
{     *x=... ;
      *y=... ;
      *z=... ;
}      
 
 
Bye

 

[jfdsdjhfuetppo]--Message édité par eniac--[/jfdsdjhfuetppo]


---------------
If you really want something, all the Universe conspires in helping you to achieve it.
mood
Publicité
Posté le 01-04-2002 à 17:42:03  profilanswer
 

n°120007
chrisbk
-
Posté le 01-04-2002 à 21:25:16  profilanswer
 

eniac a écrit a écrit :

 
void charger(int *x, int *y, int *z)  
{     *x=... ;
      *y=... ;
      *z=... ;
}      
 
 
Bye  




 
now that's better ;)

n°120060
Goratrix
Posté le 02-04-2002 à 01:03:46  profilanswer
 

Je voudrais juste te conseiller BFRRedox de lire un bouquin de C aux chapitres suivants:
- pointeur
 
- passage par paramètre
 
Apres tout deviendra clair...
 :)  
 
P.S.: oublie ta solution de passer par un tableau car c bidon c pas du C c du bricolage... les pointeurs c fait justement pour modifer une variable a l'interieur d'une fonction...


---------------
"The oldest and strongest emotion of Mankind is Fear and the oldest and strongest Fear is the Fear of the Unknown"

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

  [C++] Besoin d'aide sur un return ... niveau debutant :)

 

Sujets relatifs
Flash 5: Besoin d'aide svp...[DEBUTANT] Comment compiler un fichier.c trouvé sur internet ?
aide PHP svpaide sur un bp en ASP
regex besoin d'aide :-(A l aide (servlet)
[VC++] Besoin d'un expert en DLL/mémoire partagé/allocation mémoireprobleme sous oracle besoin personne trés qualifie
Plus de sujets relatifs à : [C++] Besoin d'aide sur un return ... niveau debutant :)


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