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

  FORUM HardWare.fr
  Programmation
  C

  [C] Petite question sur la commande 'return'

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Petite question sur la commande 'return'

n°1318134
reiboul
Swedish Metal Powaa ;)
Posté le 03-03-2006 à 20:01:46  profilanswer
 

Bonosir!
voila j'ai une question (comme pas mal de gens ici lol) pour faire un programme en C
je m'entraine a utiliser la commande 'return' et j'ai ici un petit probleme
 
j'ai une fonction, appelons la 'fonction' qui me calcule 2 valeurs, et une fonction main, dans laquelle je dois recuperer ces valeurs et les afficher
 
pour l'instant j'ai un truc qui ressemble a
 
int fonction (int x, int y)  
{
---
--
return a, b;
}
 
main()  
{
---
----
printf("%d et %d",fonction(x, y))  
}
 
a la place des %d dans mon printf j'aimerai donc afficher le couple de reponses A et B obtenu grace a 'fonction', le probleme est que en faisant comme ça, j'ai des valeurs assez folkloriques qui s'affichent...
qqn a une idée alors pour afficher mes 2 valeurs a et b en modifiant un peu cette ecriture??
merci bcp :)

Message cité 1 fois
Message édité par reiboul le 03-03-2006 à 20:02:36

---------------
Amon Amarth, Dark Tranquillity, Opeth, Dimmu Borgir, In Flames, Children of Bodom, Kreator, Metallica... pas d'la musique de paidai tout sa :o
mood
Publicité
Posté le 03-03-2006 à 20:01:46  profilanswer
 

n°1318145
LePhasme
Les Belges domineront le monde
Posté le 03-03-2006 à 20:21:10  profilanswer
 

Un return ne renvoit qu'une seule valeur, si tu as besoin de plusieurs valeurs de retour, soit tu renvoies un tableau ou une structure, soit tu passes 2 arguments par pointeurs.


Message édité par LePhasme le 03-03-2006 à 20:21:31
n°1318150
reiboul
Swedish Metal Powaa ;)
Posté le 03-03-2006 à 20:28:34  profilanswer
 

euh... sa depasse mon niveau de competences, la  :whistle:  
(et encore, si je devai me contenter des cours que je reçois a ma fac, je serai encore a ecrire des programmes qui affichent des 'hello world' :D)


---------------
Amon Amarth, Dark Tranquillity, Opeth, Dimmu Borgir, In Flames, Children of Bodom, Kreator, Metallica... pas d'la musique de paidai tout sa :o
n°1318172
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-03-2006 à 21:17:30  profilanswer
 

reiboul a écrit :

je m'entraine a utiliser la commande 'return' et j'ai ici un petit probleme


return n'est pas une 'commande', mais une 'instruction'.

Citation :


j'ai une fonction, appelons la 'fonction' qui me calcule 2 valeurs, et une fonction main, dans laquelle je dois recuperer ces valeurs et les afficher
 
pour l'instant j'ai un truc qui ressemble a


int fonction (int x, int y)  
{
---
--
return a, b;
}




Je ne sais pas qui t'a fait croire que ce code avait un sens, mais c'est faux. En fait, seule dernière valeur (la plus à droite) est retournée, soit ici, la valeur de b.


#include <stdio.h>
 
int f(void)
{
   return 1, 2;
}
 
int main(void)
{
   int x = f();
 
   printf ("x = %d\n", x);
 
   return 0;
}


Citation :


main()  
{
---
----
printf("%d et %d",fonction(x, y))  
}
 
a la place des %d dans mon printf j'aimerai donc afficher le couple de reponses A et B obtenu grace a 'fonction', le probleme est que en faisant comme ça, j'ai des valeurs assez folkloriques qui s'affichent...
qqn a une idée alors pour afficher mes 2 valeurs a et b en modifiant un peu cette ecriture??
merci bcp :)


Evidemment, ceci ne fonctionne pas du tout.
 
Soit tu passes l'adresse de 2 variables :  


  f (&a, &b);


avec f() défini comme suit :  


void f (int *pa, int *pb)
{
   ...
}


soit tu définis une structure


struct data
{
   int a;  
   int b;
};


que tu instancies:  


struct data results;


et dont tu passes l'adresse à la fonction


   f (&results);


La fonction étant définie comme suit :  


void f (struct data *p_results)
{
   ...
}


Message édité par Emmanuel Delahaye le 03-03-2006 à 21:19:36

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1318197
reiboul
Swedish Metal Powaa ;)
Posté le 03-03-2006 à 22:01:46  profilanswer
 

Bon vu que mon niveau en C est relativement faible, je crois que pour le moment je vais me contenter d'une structure du type
 
 
int fonction (int x, int y)  
{
int a, b;
a=2*x;
b=4*a+y;
printf("%d et %d",a,b);
}
 
main()  
{
int x, y;
scanf("%d",&x);
scanf("%d",&y);
fonction(x,y);
}  
 
 
C'est un exemple totalement bidon bien sur, mais bon jusqu'a ce que je voie la structure que je voulais en cours, je crois que je v en rester la  :whistle:  
 
merci pour votre aide!  :hello:  :sol:


---------------
Amon Amarth, Dark Tranquillity, Opeth, Dimmu Borgir, In Flames, Children of Bodom, Kreator, Metallica... pas d'la musique de paidai tout sa :o
n°1319307
meik
Posté le 06-03-2006 à 12:11:03  profilanswer
 

ouais mais dans ce cas la tu n'utilises pas ton return :)

n°1319331
Trap D
Posté le 06-03-2006 à 12:46:11  profilanswer
 

reiboul a écrit :

 
main()  
{
int x, y;
scanf("%d",&x);
scanf("%d",&y);
fonction(x,y);
}  

Tant qu'à faire un prog "bidon" fais le correctement

Code :
  1. // attention au prototype de main
  2. int main (void)
  3. {
  4.   int x, y;
  5.   // scanf est d'un usage difficile, utilse plutôt de manière
  6.   // conjointe fgets et strtol.
  7.   // fgets(buf, sizeof(buf), stdin);
  8.   // x = strtol(buf, NULL, 10);
  9.   scanf("%d",&x);
  10.   scanf("%d",&y);
  11.   fonction(x,y);
  12.  
  13.   // un fonction doit renvoyer une valeur.
  14.   return 0;
  15. }


n°1319450
reiboul
Swedish Metal Powaa ;)
Posté le 06-03-2006 à 15:16:54  profilanswer
 

boarf j'ai pas besoin que ma fonction main ne me renvoie qqchose :) y'a un interet a faire sa?


---------------
Amon Amarth, Dark Tranquillity, Opeth, Dimmu Borgir, In Flames, Children of Bodom, Kreator, Metallica... pas d'la musique de paidai tout sa :o
n°1319466
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-03-2006 à 15:37:58  profilanswer
 

reiboul a écrit :

boarf j'ai pas besoin que ma fonction main ne me renvoie qqchose :) y'a un interet a faire sa?


1 - c'est la regle
2 - ton système attend une valeur. Celle-ci doit être cohérente. Les valeurs portables sont :  

  • 0
  • EXIT_SUCCESS[1]
  • EXIT_FAILURE[1]


http://mapage.noos.fr/emdel/notes.htm#typemain
 
---------------
[1] Définies dans <stdlib.h>


Message édité par Emmanuel Delahaye le 06-03-2006 à 16:26:43

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1319475
reiboul
Swedish Metal Powaa ;)
Posté le 06-03-2006 à 15:43:23  profilanswer
 

sa sert quand meme pas a grand chose dans un programme simple, non?
(du genre de ce qu'on programme en cours pour apprendre)


---------------
Amon Amarth, Dark Tranquillity, Opeth, Dimmu Borgir, In Flames, Children of Bodom, Kreator, Metallica... pas d'la musique de paidai tout sa :o
mood
Publicité
Posté le 06-03-2006 à 15:43:23  profilanswer
 

n°1319497
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-03-2006 à 15:57:33  profilanswer
 

reiboul a écrit :

sa sert quand meme pas a grand chose dans un programme simple, non?
(du genre de ce qu'on programme en cours pour apprendre)


Si on ne le fait pas, le comportement est indéterminé. Maintenant, tu fais ce que tu veux.


Message édité par Emmanuel Delahaye le 06-03-2006 à 15:57:47

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1319538
reiboul
Swedish Metal Powaa ;)
Posté le 06-03-2006 à 16:13:30  profilanswer
 

donc je suppose qu'il vaut mieu prendre les bonnes habitudes :)
merci de tes conseils!


---------------
Amon Amarth, Dark Tranquillity, Opeth, Dimmu Borgir, In Flames, Children of Bodom, Kreator, Metallica... pas d'la musique de paidai tout sa :o

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

  [C] Petite question sur la commande 'return'

 

Sujets relatifs
appel d'une commande shell à partir d'un programme javaune question toute simple
[Charset] Charset par défaut d'un invite de commande[resolu]question de gros nul...désolé $_POST et $_GET
UML projet sur commande de cam ip via le netquestion de noob
Une petite question sur gdbpetite question pour programmer sous VB
Plus de sujets relatifs à : [C] Petite question sur la commande 'return'


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