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

  FORUM HardWare.fr
  Programmation
  C++

  Appel d'une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Appel d'une fonction

n°2152592
nirvana_89
Posté le 05-08-2012 à 14:10:23  profilanswer
 

Salut !
J’ai  une fonction " int calcul_somme (int * ptr,  int nb_el) " et je veux qu’à chaque appel de cette fonction je sauvegarde les valeurs de *ptr  et  nb_el  pour les utiliser lors de l’appel suivant jusqu’à un nombre n d’appels déterminé.
Mais je n’arrive pas à sauvegarder les nouvelles valeurs à chaque appel (à chaque appel  la fonction prend les valeurs initiales ) ni à connaître et gérer le nombre d’appel de la fonction.  

mood
Publicité
Posté le 05-08-2012 à 14:10:23  profilanswer
 

n°2152594
theshockwa​ve
I work at a firm named Koslow
Posté le 05-08-2012 à 15:23:25  profilanswer
 

Ta question me donne l'impression que tu n'as pas cerné exactement l'énoncé. Vraisemblablement, tu voudrais itérer sur tes valeurs à l'extérieur de ta fonction, mais une fonction avec ce prototype a pour rôle d'itérer sur les valeurs.


---------------
last.fm
n°2152598
breizhbugs
Posté le 05-08-2012 à 16:22:57  profilanswer
 

Une connerie du genre:

Code :
  1. int calcul_somme (int * ptr,  int nb_el)
  2. {
  3.      static int lastptr = 0;
  4.      static int lastnb = 0;
  5.      static int nbfois = 10;
  6.      int ret = lastptr+lastnb;
  7.      if (nbfois==0)
  8.         return *ptr+nb_el;
  9.      lastptr = *ptr;
  10.      lastnb = nb_el;
  11.      nbfois--;
  12.      return ret;
  13. }


ca te convient pas? (en dehors des calculs faitaisistes!)


---------------
Seul Google le sait...
n°2152603
theshockwa​ve
I work at a firm named Koslow
Posté le 05-08-2012 à 16:57:15  profilanswer
 

breizhbugs a écrit :

Une connerie du genre:

Code :
  1. int calcul_somme (int * ptr,  int nb_el)
  2. {
  3.      static int lastptr = 0;
  4.      static int lastnb = 0;
  5.      static int nbfois = 10;
  6.      int ret = lastptr+lastnb;
  7.      if (nbfois==0)
  8.         return *ptr+nb_el;
  9.      lastptr = *ptr;
  10.      lastnb = nb_el;
  11.      nbfois--;
  12.      return ret;
  13. }


ca te convient pas? (en dehors des calculs faitaisistes!)


 [:bvampire]


---------------
last.fm
n°2152606
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 05-08-2012 à 18:00:53  profilanswer
 

Lu comme ça on dirait presque que tu veux faire une fonction récursive en fait non ? :o


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2152615
nirvana_89
Posté le 06-08-2012 à 01:39:01  profilanswer
 

Non ce n'est pas une fonction récursive.
Je m'explique encore: si j'ai pas exemple un tableau tab de 100 éléments et  je veux à chaque appel de ma fonction calculer la somme de 10 éléments de ce tableau c'àd  
1/ lors du 1er appel je fais la somme des 10 premiers éléments et j'ai comme valeur de retour cette somme et je sauvegarde dans ptr l'adresse de tab[0]
2/ si je fais un 2eme appel de cette je ferais la somme des 10 deuxièmes éléments (sans avoir à le préciser au complilateur) et j'ai comme valeur de retour cette somme et je sauvegarde dans ptr l'adresse de tab[9]  
ainsi de suite  
et à partir du 10 ème appel j'afficherai un msg d'erreur.

n°2152684
dreameddea​th
Posté le 06-08-2012 à 21:32:26  profilanswer
 

dans ce cas, il y a deux possibilités :
- utiliser des variables statiques (mais ce n'est pas terrible)
- ajouter des variables de sauvegarde de contexte
 
Je ne vais donc parler que du deuxième point. Le prototype de la fonction pourrait être :

Code :
  1. int calcul_somme( int* tableau,int nb_elems,int **last_pos_pp);


 
un exemple d'appel pourrait être le suivant

Code :
  1. int* sav_pos_p=NULL;
  2. do{
  3.     int res;
  4.     res = calcul_somme(tableau,nb_elem,&sav_pos_p);
  5.     // gérer le reste
  6. } while( sav_pos_p!=NULL);


 
La fonction va juste contrôler l'état du pointeur à chaque appel pour savoir d' où "repartir". Il faut juste mettre null dans le pointeur quand le tableau a été entièrement traité ou alors sauvegarder le pointeur d'où repartir au prochain appel si il reste des éléments à traiter.
 
je te laisse chercher un peu pour le code de la fonction
 
@+


Message édité par dreameddeath le 07-08-2012 à 00:23:49
n°2152707
nirvana_89
Posté le 06-08-2012 à 23:42:04  profilanswer
 

Merci ^^


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

  Appel d'une fonction

 

Sujets relatifs
Appel fonction Javascript dans variable PHPespaces dans valeurs variable bloque appel à la fonction ?
Appel d'une fonction javascript ) partir d'un hrefDeclaration / appel fonction javascript
utilisation de sous fonction dans un objet et appel de methode dedans[SQLServer] appel de fonction avec un déclencheur sql server 2008
Appel d'une fonction contrôlant la dateJS/Ajax appel d'une fonction de webservice avec un paramètre
[GLSL - branchement conditionnel + appel de fonction]appel d'une fonction dans une boucle ne se réalise qu'une fois
Plus de sujets relatifs à : Appel d'une fonction


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