Comment reutiliser des variables dans d'autre fonction??

Comment reutiliser des variables dans d'autre fonction?? - C - Programmation

Marsh Posté le 02-04-2005 à 16:36:31    

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

Reply

Marsh Posté le 02-04-2005 à 16:36:31   

Reply

Marsh Posté le 02-04-2005 à 16:41:39    

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
Reply

Marsh Posté le 02-04-2005 à 16:48:15    

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

Reply

Marsh Posté le 02-04-2005 à 16:49:06    

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
Reply

Marsh Posté le 02-04-2005 à 16:51:47    

push a écrit :

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


Reply

Marsh Posté le 02-04-2005 à 17:04:12    

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
Reply

Marsh Posté le 02-04-2005 à 17:04:18    

on a dit retirer les étoiles [:petrus75]

Reply

Marsh Posté le 02-04-2005 à 17:07:25    

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

Reply

Marsh Posté le 02-04-2005 à 17:09:45    

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
Reply

Marsh Posté le 02-04-2005 à 17:11:51    

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

Reply

Marsh Posté le 02-04-2005 à 17:11:51   

Reply

Marsh Posté le 02-04-2005 à 17:12:52    

ares9907 a écrit :

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


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

Reply

Marsh Posté le 02-04-2005 à 17:19:18    

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. }

Reply

Marsh Posté le 02-04-2005 à 17:20:54    

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

Reply

Marsh Posté le 02-04-2005 à 17:27:46    

Utilise des variables globales :D

Reply

Marsh Posté le 02-04-2005 à 17:28:53    

globales? pour ?

Reply

Marsh Posté le 02-04-2005 à 17:32:25    

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
Reply

Marsh Posté le 02-04-2005 à 17:37:29    

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

Reply

Marsh Posté le 02-04-2005 à 17:45:33    

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.

Reply

Marsh Posté le 02-04-2005 à 17:55:05    

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
Reply

Marsh Posté le 02-04-2005 à 18:15:42    

ç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.

Reply

Marsh Posté le 02-04-2005 à 18:22:03    

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

Reply

Marsh Posté le 02-04-2005 à 18:39:59    

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 :'()

Reply

Marsh Posté le 02-04-2005 à 18:59:42    

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
Reply

Marsh Posté le 02-04-2005 à 19:00:45    

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

Reply

Marsh Posté le 02-04-2005 à 19:03:52    

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

Reply

Marsh Posté le 02-04-2005 à 19:08:14    

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
Reply

Marsh Posté le 02-04-2005 à 19:20:00    

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/
Reply

Marsh Posté le 02-04-2005 à 19:24:34    

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

Reply

Marsh Posté le 02-04-2005 à 19:31:30    

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/
Reply

Marsh Posté le 02-04-2005 à 19:32:25    

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/
Reply

Marsh Posté le 02-04-2005 à 19:42:26    

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. }

Reply

Marsh Posté le 02-04-2005 à 19:43:19    

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 ?

Reply

Marsh Posté le 02-04-2005 à 21:13:13    

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]

Reply

Marsh Posté le 03-04-2005 à 00:37:40    

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/
Reply

Marsh Posté le 03-04-2005 à 10:54:04    

comment revenir a ma fonction main alors?

Reply

Marsh Posté le 03-04-2005 à 11:02:24    

return; ;)

Reply

Marsh Posté le 03-04-2005 à 11:04:44    

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/
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed