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

  FORUM HardWare.fr
  Programmation
  C

  Comment reutiliser des variables dans d'autre fonction??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment reutiliser des variables dans d'autre fonction??

n°1033154
ares9907
Posté le 02-04-2005 à 16:36:31  profilanswer
 

Voila
 
Dans une fonction, je demande a lutilisateur d'entrer plusieur valeurs, que je stock dans differente variabeles! Ex: a,b,c!
 
Comment puis-je réutiliser ce que l'utilisateur a saisie dans une autre fonction ???
Pointeur? non, ça fonctionne pas!
 
J'ai réucis une fois, en créan une fonction pr la demande de chaque variable (une fonction pr a, pr b et pour c!) Et je fais un return!
Mais, c'est trop long! Et me permet pas d'utiliser les variables a b et c ds nimporte quelle autre fonction!
 
Comment puis-je faire??
 
Merci

mood
Publicité
Posté le 02-04-2005 à 16:36:31  profilanswer
 

n°1033155
push
/dev/random
Posté le 02-04-2005 à 16:41:39  profilanswer
 

ares9907 a écrit :

Pointeur? non, ça fonctionne pas!


si si ça fonctionne,
 
montres nous un exemple qui ne fonctionne pas.


Message édité par push le 02-04-2005 à 16:41:51
n°1033157
push
/dev/random
Posté le 02-04-2005 à 16:48:15  profilanswer
 

tu peux éditer et mettre ton code avec les balises [*cpp] ton code [*/cpp] (retirer les étoiles) stp.

n°1033158
ares9907
Posté le 02-04-2005 à 16:49:06  profilanswer
 

Code :
  1. #include<stdio.h>
  2. #include<process.h>
  3. #include<stdlib.h>
  4. #include<conio.h>
  5. void main();
  6. /* ! ATTENTION ! : v_rapp1 est la vitesse pour le passage du 2nd RAPPORT, et non du 1er,
  7. puisque le 1er rapport est enclenché lors du demarrage!*/
  8. void tableau_parametre();
  9. //FONCTION Saisie de la vitesse d'enclenchement  
  10. int v_demarrage()
  11.  {
  12. int v_min;
  13.  printf("1-Entrer la vitesse d'enclenchement de l\'eolienne : " );
  14.  scanf("%d",&v_min);
  15.  while ((v_min<=0)||(v_min>450))
  16.  {
  17.   printf("\n\aLa vitesse doit etre comprise entre 1 et 450 km/h\n\n1-Nouvelle saisie : " );
  18.   scanf("%d",&v_min);
  19.  }
  20.  return (v_min);
  21.  }
  22. //FONCTION Saisie de la vitesse pour le passage de la 2nd vitesse
  23. int v_rapport1()
  24. {
  25. int v_rapp1;
  26. printf("\n2-Entrer la vitesse pour le passage du 2nd rapport de vitesse : " );
  27.  scanf("%d",&v_rapp1);
  28.   while((v_rapp1<=0)||(v_rapp1>450))
  29.  {
  30.   printf("\n\aSaisie incorrecte, la vitesse ne peut etre superieur a 450km/h ou inferieur ou  egal a la vitesse d'enclenchement\n\n2-Nouvelle saisie : " );
  31.   scanf("%d",&v_rapp1);
  32.  }
  33.  return (v_rapp1);
  34. }
  35. //FONCTION Saisie de la vitesse pour le passage de la 3eme vitesse
  36. int v_rapport2()
  37. {
  38. int v_rapp2;
  39. printf("\n3-Entrer la vitesse pour le passage du 3eme rapport de vitesse : " );
  40.  scanf("%d",&v_rapp2);
  41.   while((v_rapp2<=0)||(v_rapp2>450))
  42.  {
  43.   printf("\n\aSaisie incorrecte, la vitesse ne peut etre superieur a 450km/h ou inferieur ou  egal a la vitesse d'enclenchement\n\n3-Nouvelle saisie : " );
  44.   scanf("%d",&v_rapp2);
  45.  }
  46.  return (v_rapp2);
  47. }
  48. //FONCTION Saisie de la vitesse pour le passage de la 4eme vitesse
  49. int v_rapport3()
  50. {
  51. int v_rapp3;
  52. printf("\n4-Entrer la vitesse pour le passage du 4eme rapport de vitesse : " );
  53.  scanf("%d",&v_rapp3);
  54.   while((v_rapp3<=0)||(v_rapp3>450))
  55.  {
  56.   printf("\n\aSaisie incorrecte, la vitesse ne peut etre superieur a 450km/h ou inferieur ou egal a la vitesse d'enclenchement\n\n4-Nouvelle saisie : " );
  57.   scanf("%d",&v_rapp3);
  58.  }
  59.  return (v_rapp3);
  60. }
  61. //FONCTION Saisie de la vitesse maximal (vitesse frein)
  62. int v_maximale_frein()
  63. {
  64.  int v_max;
  65.  printf("\n5-Entrer la vitesse a laquelle le frein doit se declencher : " );
  66.  scanf("%d",&v_max);
  67.  while((v_max<=0)||(v_max>450))
  68.  {
  69.   printf("\n\aSaisie incorrecte, la vitesse du frein ne peut etre egale a la vitesse du 4eme rapport, ou superieur a 450km/h\n\n5-Nouvelle saisie : " );
  70.   scanf("%d",&v_max);
  71.  }
  72.  return (v_max);
  73. }
  74. //FONCTION Recapitulatif
  75. void recap_valeur(int v_min,int v_rapp1,int v_rapp2,int v_rapp3,int v_max)
  76. {
  77. system("cls" );
  78. int n=0,i,*p_v_min;
  79. if ((v_min>0)&&(v_min<v_rapp1)&&(v_rapp1<v_rapp2)&&(v_rapp2<v_rapp3)&&(v_rapp3<v_max)&&(v_max<=450))
  80. {
  81.  printf("1-Pour un vent de %dkm/h l\'eolienne demarre.\n2-Pour un vent de %dkm/h le 2nd rapport est enclenche.\n3-Pour un vent de %dkm/h le 3eme rapport est enclenche.\n4-Pour un vent de %dkm/h le 4eme rapport est enclenche.\n5-Pour un vent de %dkm/h le frein s\'enclenche.\n\n",v_min,v_rapp1,v_rapp2,v_rapp3,v_max);
  82.  printf("Retour au menu principal dans :\n" );
  83.  p_v_min=&v_min;
  84.   for (i=11;i>=0;i--)
  85.  {             //
  86.   printf("%d\r",i);
  87.   _sleep(1000);
  88.   if(kbhit())
  89.  {
  90.   n=27;
  91.   main();
  92.  }
  93. }
  94.  main();
  95. }
  96. //Controle des valeurs saisies !
  97. else
  98. {
  99.  //repete jusqu'a qu'il n'y est plus d'erreur :
  100.  while ((v_rapp3<=v_min)||(v_rapp3<=v_rapp1)||(v_rapp3<=v_rapp2)||(v_rapp2<=v_min)||(v_rapp2<=v_rapp1)||(v_rapp1<=v_min))
  101.  {
  102.    //Controle frein
  103.  if((v_max<v_min)||(v_max<=v_rapp1)||(v_max<=v_rapp2)||(v_max<=v_rapp3))
  104.  {
  105.   system("cls" );
  106.   printf("\a*Erreure vitesse frein !\n\nLa vitesse de declenchement du frein doit etre superieur a toutes les autres    vitesses !\n\nVous aviez saisie : \n\nVitesse demmarage:%dkm/h\nVitesse 2d rapport:%dkm/h\nVitesse 3eme rapport:%dkm/h\nVitesse 4eme rapport:%dkm/h\n\nNouvelle vitesse frein : ",v_min,v_rapp1,v_rapp2,v_rapp3);
  107.   scanf("%d",&v_max);
  108.   while ((v_max<=0)||(v_max>450))
  109.   {
  110.    system("cls" );
  111.   printf("\n\aSaisie incorrecte, la vitesse du frein ne peut etre egale a la vitesse du 4eme rapport, ou superieur a 450km/h\n\nVous aviez saisie : \n\nVitesse demmarage:%dkm/h\nVitesse 2d rapport:%dkm/h\nVitesse 3eme rapport:%dkm/h\nVitesse 4eme rapport:%dkm/h\n\nNouvelle vitesse frein : ",v_min,v_rapp1,v_rapp2,v_rapp3);
  112.   scanf("%d",&v_max);
  113.   }
  114.  }
  115.  else
  116.  {
  117.  //Controle vitesse pour passage du 4eme rapport
  118.   if((v_rapp3<=v_min)||(v_rapp3<=v_rapp1)||(v_rapp3<=v_rapp2))
  119.    {
  120.   system("cls" );
  121.   printf("\a*Erreure vitesse 4eme rapport !\n\nLa vitesse du vent pour le passage de la 4eme vitesse doit etre superieur a la vitesse de demarrage et la vitesse du passage du 3eme et 2nd rapports!\n\nVous aviez saisie :\n\nVitesse demarrage:%dkm/h\nVitesse 2nd rapport:%dkm/h\n->Vitesse 3eme rapport:%dkm/h\n->Vitesse frein %dkm/h\n\nNouvelle saisie vitesse 4eme rapport : ",v_min,v_rapp1,v_rapp2,v_max);
  122.   scanf("%d&",&v_rapp3);
  123.    while((v_rapp3<=0)||(v_rapp3>450))
  124.     {
  125.     system("cls" );
  126.   printf("\n\aSaisie incorrecte, la vitesse ne peut etre superieur a 450km/h ou inferieur ou  egal a la vitesse d'enclenchement\n\nVous aviez saisie :\n\nVitesse demarrage:%dkm/h\nVitesse 2nd rapport:%dkm/h\n->Vitesse 3eme rapport:%dkm/h\n->Nouvelle saisie vitesse 4eme rapport : ",v_min,v_rapp1,v_rapp2);
  127.   scanf("%d",&v_rapp3);
  128.     }
  129.    }
  130.   else
  131.   {
  132.    //Controle vitesse pour passage 3eme rapport
  133.    if((v_rapp2<=v_min)||(v_rapp2<=v_rapp1))
  134.    {
  135.     system("cls" );
  136.     printf("\a*Erreure vitesse 3eme rapport !\n\nLa vitesse du vent pour le passage du 3eme rapport doit etre superieur a la vitesse de demarrage et a la vitesse du passage du 2nd rapport\n\nVous aviez saisie:\n\nVitesse demarrage:%dkm/h\n->Vitesse 2d rapport:%dkm/h\n->Vitesse 4eme rapport:%dkm/h.\nVitesse frein:%dkm/h.\n\nNouvelle saisie vitesse 3eme rapport : ",v_min,v_rapp1,v_rapp3,v_max);
  137.     scanf("%d",&v_rapp2);
  138.   while((v_rapp2<=0)||(v_rapp2>450))
  139.     {
  140.    system("cls" );
  141.   printf("\n\aSaisie incorrecte, la vitesse ne peut etre superieur a 450km/h ou inferieur ou  egal a la vitesse d'enclenchement\n\nVous aviez saisie:\n\nVitesse demarrage:%dkm/h\n->Vitesse 2d rapport:%dkm/h\n->Vitesse 4eme rapport:%dkm/h.\nVitesse frein:%dkm/h.\n\nNouvelle saisie vitesse 3eme rapport : ",v_min,v_rapp1,v_rapp3,v_max);
  142.   scanf("%d",&v_rapp2);
  143.     }
  144.    }
  145.    else
  146.    {
  147.     //Controle vitesse pour passage 2nd rapport
  148.     if(v_rapp1<=v_min)
  149.     {
  150.      system("cls" );
  151.      printf("\a*Erreure vitesse 2nd rapport !\n\nLa vitesse de passage du 2nd rapport doit etre superieur a la vitesse de demarrage\n\nVous aviez saisie :\n\n->Vitesse demarrage:%dkm/h.\n->Vitesse 3eme rapport:%dkm/h.\nVitesse 4eme rapport:%dkm/h.\nVitesse frein:%dkm/h.\n\nNouvelle saisie 2n rapport : ",v_min,v_rapp2,v_rapp3,v_max);
  152.      scanf("%d",&v_rapp1);
  153.      while((v_rapp1<=0)||(v_rapp1>450))
  154.     {
  155.       system("cls" );
  156.      printf("\n\aSaisie incorrecte, la vitesse ne peut etre superieur a 450km/h ou inferieur ou  egal a la vitesse d'enclenchement\n\nVous aviez saisie :\n\n->Vitesse demarrage:%dkm/h.\n->Vitesse 3eme rapport:%dkm/h.\nVitesse 4eme rapport:%dkm/h.\nVitesse frein:%dkm/h.\n\nNouvelle saisie 2n rapport : ",v_min,v_rapp2,v_rapp3,v_max);
  157.      scanf("%d",&v_rapp1);
  158.      }
  159.     }
  160.    }
  161.   }
  162.  }
  163. }
  164. }
  165.  recap_valeur(v_min,v_rapp1,v_rapp2,v_rapp3,v_max);
  166. }
  167. //FONCTION Permet la saisie des différentes vitesses
  168. void parametrage()
  169. {
  170. int v_min,v_rapp1,v_rapp2,v_rapp3,v_max,retour=0,*p_v_min;
  171.  system("cls" );
  172.  printf("    %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",201,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,187);
  173.  printf("    %c*** Parametrage de l\'eolienne ***%c\n",186,186);
  174.  printf("    %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n\n\n",200,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,188);
  175.  v_min=v_demarrage();
  176.  p_v_min=&v_min;
  177.  v_rapp1=v_rapport1();
  178.  v_rapp2=v_rapport2();
  179.  v_rapp3=v_rapport3();
  180.  v_max=v_maximale_frein();
  181.  recap_valeur(v_min,v_rapp1,v_rapp2,v_rapp3,v_max);
  182. }


 
Voila, couleur pour les commentaires, pr eclaircir!
Oui, le controle de  saisie est COMPLIQUé!!!!! mais, arrivais pas a faire autrement :'(!


Message édité par ares9907 le 02-04-2005 à 17:06:43
n°1033160
Mackila
Posté le 02-04-2005 à 16:51:47  profilanswer
 

push a écrit :

tu peux éditer et mettre ton code avec les balises [*cpp] ton code [*/cpp] (retirer les étoiles) stp.


n°1033161
ares9907
Posté le 02-04-2005 à 17:04:12  profilanswer
 

Heu pas tro compris... :??:  
 
Je peux envoyer le workspace, ça serait plus simple, tu verrais toutes les autres fonctions, et dans lesquelles que je veux utiliser les var...?
Par msn ?
ares9907@hotmail.com


Message édité par ares9907 le 02-04-2005 à 17:05:15
n°1033162
push
/dev/random
Posté le 02-04-2005 à 17:04:18  profilanswer
 

on a dit retirer les étoiles [:petrus75]

n°1033163
ares9907
Posté le 02-04-2005 à 17:07:25  profilanswer
 

Oki, lol, c'est mieux en effet !!

n°1033165
push
/dev/random
Posté le 02-04-2005 à 17:09:45  profilanswer
 

j'ai pas vraiment envie de me tapper ton code enfait, en méditant sur ce bête exemple tu pourras arriver à tes fins je pensse.
 

Code :
  1. #include <stdio.h>
  2. void toto (int *a)
  3. {
  4.   ++(*a);
  5. }
  6. int main (void)
  7. {
  8.   int a = 2;
  9.   toto (&a);
  10.   printf ("%d", a);
  11.   return 0;
  12. }


Message édité par push le 02-04-2005 à 17:23:15
n°1033166
ares9907
Posté le 02-04-2005 à 17:11:51  profilanswer
 

hm, mouais,  
 
C'est quoi ++(*a)?

mood
Publicité
Posté le 02-04-2005 à 17:11:51  profilanswer
 

n°1033167
push
/dev/random
Posté le 02-04-2005 à 17:12:52  profilanswer
 

ares9907 a écrit :

hm, mouais,  
 
C'est quoi ++(*a)?


ça revient à faire *a = (*a) + 1;

n°1033171
ares9907
Posté le 02-04-2005 à 17:19:18  profilanswer
 

Hm, 'vois pas trop le dérouelement en fait ! :??:  
Oauis, un peu boulet !  :ange:  

Code :
  1. #include <stdlib.h>
  2. //declaration fonction toto?
  3. void toto (int *a)
  4. {
  5.   ++(*a);
  6. }
  7. //(void)? equivalent a int main()?
  8. int main (void)
  9. {
  10.   int a = 2;
  11.   toto (&a);
  12.   printf ("%d", a);
  13.   return 0;
  14. }

n°1033173
ares9907
Posté le 02-04-2005 à 17:20:54  profilanswer
 

Mais, là, je ne retourne qu'une seul variable.....
Et si je veux réutiliser plusieurs variable saisie ds une fontion, F1 et réutiliser c'est variable ds F2 F3 F4...
 

n°1033176
deather2
Posté le 02-04-2005 à 17:27:46  profilanswer
 

Utilise des variables globales :D

n°1033177
ares9907
Posté le 02-04-2005 à 17:28:53  profilanswer
 

globales? pour ?

n°1033179
push
/dev/random
Posté le 02-04-2005 à 17:32:25  profilanswer
 

Deather2> chut  :D  
 
ares9907> pour la première partie oui je déclare et définis la fonction toto.
pour le void ça change rien, et si t'as plusieurs variables bein tu passes l'adresse de ces variables c'est tout.

Code :
  1. #include <stdio.h>
  2. void toto (int *a, int *b, int *c)
  3. {
  4.   ++(*a);
  5.   *b = 20;
  6.   *c = 0;
  7. }
  8. int main (void)
  9. {
  10.   int a = 2, b = 3, c = 4;
  11.   toto (&a, &b, &c);
  12.   printf ("%d\n%d\n%d", a, b, c);
  13.   return 0;
  14. }


Message édité par push le 02-04-2005 à 18:17:47
n°1033180
ares9907
Posté le 02-04-2005 à 17:37:29  profilanswer
 

Hm, ben, dans mon programme precedent, c'est ce que j'ai fias....sans utiliser de pointeur meme...
 

n°1033182
push
/dev/random
Posté le 02-04-2005 à 17:45:33  profilanswer
 

le but c'était de te passer de tes return non ? tu passais les valeurs des variables en paramètre, ici jte montre comment passer les adresses de tes variables pour pouvoir les manipuler dans d'autres fonctions.

n°1033186
ares9907
Posté le 02-04-2005 à 17:55:05  profilanswer
 

Le programme plus haut :
Il y a plusieur fonction qui saisissent chacune une valeur, la valeur est affecté de la façon suivante : ligne 236 a 241,
qui renvoi a une fonction qui demande a lutilisateur la saisie de la vlaeur
 
Ap, ligne 242, je lance une fonction qui va reaficher toute les valeurs saisie, et faire un controle dessus (interval a respecté etc...)
 
Et mon progrmme gneral se deroule comme suit :
Menu principal : lutilisateur, peut soit, saisir des parametres, soit afficher l'etat de ces parametres
 
Logiquement, s'il appuie sur 2 (qui doit afficher l'etat des par) il doi s'afficher des valeur aleatoir, si mes varibale ne sont pas au prealable initialiser...
 
Ou, normalement, en appuyant sur un, ça va lancer le programme ci dessus, les variable von donc toute contenir une vlauer!
Et lorsque lutilisateur reviendra au menu principal et kl apuyra sur 2, ça devrai afficher ces valeurs saisie! et bien non!
 
Je me resser de la fonction "recap_valeur(v_min,v_rapp1,v_rapp2,v_rapp3,v_max);" (ligne 242) ms en fait il considere qu'elle sont pas correcte et lance le deroulemen de la lgine 138!(En gros, il redemande a lutilisateur la saisie....alors qu'il la deja fait, et qu'elle on deja été controlé JUSTE!)
 
Or il ne devrai pas le faire!!! Puisqu'elle on été verifé juste avant ....
 
 
Voila...si je suis plus clair??
 
En meme temps j'y suis depuis 10h ce matin sur mon truc! Et je suis pas top en info !!


Message édité par ares9907 le 02-04-2005 à 17:57:15
n°1033192
push
/dev/random
Posté le 02-04-2005 à 18:15:42  profilanswer
 

ça m'a l'air bien tordu tout ça :/
tu dois avoir un problème au niveau de la portée de tes variables.
 
quand tu appuyes sur ton 2 y va les chercher où les valeurs ?
 
tu devrais lire ça aussi http://mapage.noos.fr/emdel/notes.htm#saisie
 
et peut-être réorganiser ton prog.

n°1033195
ares9907
Posté le 02-04-2005 à 18:22:03  profilanswer
 

Ben en appuyant sur 2 ça relance la fonction "recap_valeur", et normalement, cette fonction controle l'etat des valeurs, hors, si elle sont bonnes, elles doit les afficher, et demander une nouvelle saisie ds le cas contraire...
Mais, en appuyant sur 2 : Soit lutilisateur a deja programmer, et la ça devrai réafficher les valeurs, soit lancer la demande de nouvel saisie (cas ou cest en erreur, puis qu'il na encore rien entré!) mais ds tt les cas ça demande la nouvel saisie...

n°1033203
ares9907
Posté le 02-04-2005 à 18:39:59  profilanswer
 

Est-ce que dans toto je pourrais demander a lutilisateur dentrer de saisir plusieur valeur, les controlers!
 
Puis dans une autre fonction, rapeler toto(), ça me donera tte les vlaeur saisir et controlé?
Et je pourai utiliser toto() ds nimporte kel fonction???
 
(si oui, merci, et j'ai plus ka retaper mes 200 ligne de prog :( deja 3fois ke jefface et retape 200 ligne :'()

n°1033212
ares9907
Posté le 02-04-2005 à 18:59:42  profilanswer
 

Code :
  1. #include <stdio.h>
  2. #include<process.h>
  3. //void parametrage();
  4. //void quitter();
  5. //void simulation_manuelle();
  6. //void reinitialisation();
  7. void recap_valeur2();
  8. void saisie (int *p_min,int*p_rapp2, int *p_rapp3, int *p_rapp4, int *p_max);
  9. int *p_min,*p_rapp2,*p_rapp3,*p_rapp4,*p_max;
  10. //int v_min,v_rapp1,v_rapp2,v_rapp3,v_max;
  11. void main()
  12. {
  13. int choix, a=0;
  14. system("cls" );
  15. printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",201,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,187);
  16. printf("%c     ***Menu principal***      %c\n%c         %c\n%c 1 => Parametrer de l\'eolienne      %c\n%c 2 => Reinitialisation de l\'eolienne%c\n%c 3 => Simulation manuelle      %c\n%c 4 => Simulation automatique        %c\n%c 5 => Quitter le programme          %c\n%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n\nVotre choix ? : ",186,186,186,186,186,186,186,186,186,186,186,186,186,186,200,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,188);
  17. scanf("%d",&choix);
  18. while ((choix!=1)&&(choix!=2)&&(choix!=3)&&(choix!=4)&&(choix!=5))
  19. {
  20.  printf("\n\aSaisie incorrecte !\n\nRecommencer: " );
  21.  scanf("%d",&choix);
  22. }
  23. switch(choix)
  24. {
  25. case 1 : saisie (p_min,p_rapp2, p_rapp3, p_rapp4,p_max)    /*parametrage() */  ; break;
  26. // case 2 : reinitialisation()          ; break;
  27. // case 3 : simulation_manuelle()         ; break;
  28. case 4 : recap_valeur2()       ; break;
  29. // case 5 : quitter() ; break ;
  30. }
  31. fflush(stdin);
  32. }


Code :
  1. #include<stdio.h>
  2. #include<process.h>
  3. #include<stdlib.h>
  4. #include<conio.h>
  5. void main();
  6. void saisie (int *p_min,int*p_rapp2, int *p_rapp3, int *p_rapp4, int *p_max)
  7. {
  8. p_min=0;
  9. p_rapp2=0;
  10. //p_rapp3=0;
  11. //p_rapp4=0;
  12. //p_max=0;
  13. printf("Demarrage? :" );
  14. scanf("%d",&p_min);
  15.     printf("rapport2? :" );
  16.  scanf("%d",&p_rapp2);
  17.  main();
  18. }
  19. void recap_valeur2()
  20. {
  21. int *p_min,*p_rapp2,*p_rapp3,*p_rapp4,*p_max;
  22. saisie(p_min,p_rapp2, p_rapp3, p_rapp4, p_max);
  23. printf("Dem %d\nRapport2 :\n",p_min,p_rapp2);
  24. }


 
Voila ce que je viens de tapper, truc tout simple!
En gros, j'ai une menu principal qui si on appui sur 1 menvoie dans la fonction saisie!
Et si j'appui sur 2, menvoie ds la fonction recap_valeur2!
 
En appuyant sur 1, ça marche, ça saisie les vlaeurs!
Mais je voudrais qu'en appuyant sur 2 ça m'affiche les valeur saisie, or ça me relance "saisie" et me redemande une nouvelle saisie de vlauer....en gros appuyer sur 1 ou 2 reviens au meme ds ce petit bout de prog!
 
Tu peux m'eclairer?
J'ai l'impprecion d'approcher du but !!
 
 
 
PS: tout en au, c'est mon menu principal, et aussi ma fonction principal, tout ce qui est en VERT, n'est pas utiliser, pour linstant jessai de voir si ça marche,....


Message édité par ares9907 le 02-04-2005 à 19:02:51
n°1033213
cricri_
Posté le 02-04-2005 à 19:00:45  profilanswer
 

Non, le mieux est de créer une fonction pour l'acquisition et le controle, et une autre, toto par exemple pour le traitement.

n°1033215
ares9907
Posté le 02-04-2005 à 19:03:52  profilanswer
 

Oui !! C'est ce que je veux faire !
Et ça la haut ça marche????
(beaucoup de ligne mais tres simple, oser le lire SVP )

n°1033216
ares9907
Posté le 02-04-2005 à 19:08:14  profilanswer
 

Enfin, non j'ai compris!
 
Bref, alors, comment puis je créer une fonction, qui va saisir et verifier des valeur, puis une autre qui va afficher ces valeurs saisie et controlées ???
 
Ca le progs précédent renvoie deux fois a la mm fonction (saisie)
Moi, je veux qu'en suite, ma fonction recap_valeur, maffiche les valeurs tapées dans saisie....


Message édité par ares9907 le 02-04-2005 à 19:12:26
n°1033220
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-04-2005 à 19:20:00  profilanswer
 

ares9907 a écrit :

Dans une fonction, je demande a l'utilisateur d'entrer plusieur valeurs, que je stocke dans differentes variables! Ex: a,b,c!
 
Comment puis-je réutiliser ce que l'utilisateur a saisi dans une autre fonction ???
Pointeur? non, ça fonctionne pas!


Bien sûr que ça fonctionne (si le code est correct), mais si il y a plusieurs valeurs, il faut soit plusieurs pointeurs (lourd) soit un pointeur sur une structure...
 
(et essaye d'écrire en français lisible, ça aide à se faire comprendre...)


---------------
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°1033221
ares9907
Posté le 02-04-2005 à 19:24:34  profilanswer
 

Heu, j'ai un niveau debutant en prog!
Ouais, dsl, je sais pour les fautes !

n°1033224
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-04-2005 à 19:31:30  profilanswer
 

deather2 a écrit :

Utilise des variables globales :D


Certainement le plus mauvais avis lu ici. A oublier.
 


---------------
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°1033225
Emmanuel D​elahaye
C is a sharp tool
Posté le 02-04-2005 à 19:32:25  profilanswer
 

ares9907 a écrit :

Hm, ben, dans mon programme precedent, c'est ce que j'ai fias....sans utiliser de pointeur meme...


Sans pointeurs ? Ben ça doit expliquer pourquoi ça ne marche pas!


---------------
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°1033228
ares9907
Posté le 02-04-2005 à 19:42:26  profilanswer
 

Et ça ? pk marche pas?  

Code :
  1. #include <stdio.h>
  2. #include<process.h>
  3. //void parametrage();
  4. //void quitter();
  5. //void simulation_manuelle();
  6. //void reinitialisation();
  7. void recap_valeur2();
  8. void saisie (int *p_min,int*p_rapp2, int *p_rapp3, int *p_rapp4, int *p_max);
  9. int *p_min,*p_rapp2,*p_rapp3,*p_rapp4,*p_max;
  10. //int v_min,v_rapp1,v_rapp2,v_rapp3,v_max;
  11. void main()
  12. {
  13. int choix, a=0;
  14. system("cls" );
  15. printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n",201,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,187);
  16. printf("%c     ***Menu principal***      %c\n%c         %c\n%c 1 => Parametrer de l\'eolienne      %c\n%c 2 => Reinitialisation de l\'eolienne%c\n%c 3 => Simulation manuelle      %c\n%c 4 => Simulation automatique        %c\n%c 5 => Quitter le programme          %c\n%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c\n\nVotre choix ? : ",186,186,186,186,186,186,186,186,186,186,186,186,186,186,200,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,188);
  17. scanf("%d",&choix);
  18. while ((choix!=1)&&(choix!=2)&&(choix!=3)&&(choix!=4)&&(choix!=5))
  19. {
  20.  printf("\n\aSaisie incorrecte !\n\nRecommencer: " );
  21.  scanf("%d",&choix);
  22. }
  23. switch(choix)
  24. {
  25. case 1 : saisie (p_min,p_rapp2, p_rapp3, p_rapp4,p_max)    /*parametrage() */  ; break;
  26. // case 2 : reinitialisation()          ; break;
  27. // case 3 : simulation_manuelle()         ; break;
  28. case 4 : recap_valeur2()       ; break;
  29. // case 5 : quitter() ; break ;
  30. }
  31. fflush(stdin);
  32. }


Code :
  1. #include<stdio.h>
  2. #include<process.h>
  3. #include<stdlib.h>
  4. #include<conio.h>
  5. void main();
  6. void saisie (int *p_min,int*p_rapp2, int *p_rapp3, int *p_rapp4, int *p_max)
  7. {
  8. p_min=0;
  9. p_rapp2=0;
  10. //p_rapp3=0;
  11. //p_rapp4=0;
  12. //p_max=0;
  13. printf("Demarrage? :" );
  14. scanf("%d",&p_min);
  15.     printf("rapport2? :" );
  16.  scanf("%d",&p_rapp2);
  17.  main();
  18. }
  19. void recap_valeur2()
  20. {
  21. int *p_min,*p_rapp2,*p_rapp3,*p_rapp4,*p_max;
  22. // saisie(p_min,p_rapp2, p_rapp3, p_rapp4, p_max);
  23. printf("Dem est %d\nRapport2 est %d:\n",p_min,p_rapp2);
  24. }

n°1033229
push
/dev/random
Posté le 02-04-2005 à 19:43:19  profilanswer
 

Emmanuel Delahaye a écrit :

Certainement le plus mauvais avis lu ici. A oublier.


Y'en a eut d'autres ?  :whistle:  
 
Tant que tu es là, on voit dans son prog plusieurs appels à main(), j'ai jamais vu ça et j'ai même jamais pensser à le faire, ça se fait ce genre de chose ?

n°1033273
Pillow
'cos the trees won't talk
Posté le 02-04-2005 à 21:13:13  profilanswer
 

ares9907 a écrit :

Et ça ? pk marche pas?


 
Parce que visiblement tu ne comprends pas ce qu'est un pointeur? Au lieu d'essayer de deviner, tu devrais plutot lire un bouquin de C [:spamafote]

n°1033381
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-04-2005 à 00:37:40  profilanswer
 

push a écrit :

Y'en a eut d'autres ?  :whistle:  
 
Tant que tu es là, on voit dans son prog plusieurs appels à main(), j'ai jamais vu ça et j'ai même jamais pensser à le faire, ça se fait ce genre de chose ?


C'est pas recommandé (interdit en C++)
 


---------------
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°1033475
ares9907
Posté le 03-04-2005 à 10:54:04  profilanswer
 

comment revenir a ma fonction main alors?

n°1033477
deather2
Posté le 03-04-2005 à 11:02:24  profilanswer
 

return; ;)

n°1033479
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-04-2005 à 11:04:44  profilanswer
 

ares9907 a écrit :

comment revenir a ma fonction main alors?


C'est de l'algorithmie de base...
 
Le menu est une boucle avec :

  • affichage
  • saisie
  • action selon la saisie

quand l'action est terminée, la boucle relance l'affichage et suspend l'exécution (saisie).
 

  • Une action est une fonction.
  • Une saisie particulière permet de quitter la boucle.


---------------
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/
mood
Publicité
Posté le   profilanswer
 


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

  Comment reutiliser des variables dans d'autre fonction??

 

Sujets relatifs
Comment rajouter la fonction payement en ligne sur un site WebXemacs : Couleurs en fonction du langage
Fonction générique[delphi]Retour de fonction - Type incompatible
[C] -pedantic et affectation entre pointeur de fonction et "void *"Est-il possible de passer un paramètre à la fonction include ?
[C] Problème avec les types de variables en CFixer un menu (probleme en fonction de la resolution)
convertir en maj avec la fonction touppervaleur de <input text> en fonction d'un <select>
Plus de sujets relatifs à : Comment reutiliser des variables dans d'autre fonction??


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