Comment récupérer une valeur d'une fonction ?

Résolu/Fermé
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017 - 10 mai 2014 à 20:09
dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017 - 10 mai 2014 à 20:30
Bonjour,
donc j'ai un petit problème, j'essaie de faire l'équivalent d'une liste doublement chaînée sans utiliser des pointeurs mais uniquement des tableaux multiple.

Donc ce que j'ai fais, j'ai crée deux tableaux, un pour les indices, un pour les valeurs comme suit et une variable qui fait guise de point de départ :

int tabVAL[8] = {1,4,15,31,23,6,11,3};
int tabIND[8]={7,5,6,0,2,3,1,4};
int depart =2;



J'ai fait cette fonction pour parcourir ma table :

int suivant(int VAL[], int IND[],int start){
int i ;
printf("Valeur actuel : %d",VAL[start]);
i = IND[start];
start=i;
printf("\nProchain indice : %d\n",start);
return start;

}


maintenant mon problème c'est que j'aimerais qu'en appelant la fonction suivant, ce dernier parte directement vers la prochaine valeur, par exemple j'aimerais qu'après écrire ces deux lignes :

suivant(tabVAL, tabIND, depart);
suivant(tabVAL, tabIND, depart);


que je reçoive comme résultat :

Valeur actuel : 15
Prochain indice : 6
Valeur actuel : 11
Prochain indice : 1

mais je me retrouve toujours avec une répétition des deux premières lignes. Ma question est alors simple, comment faire pour que la variable "start" change automatiquement de valeur après l'appel de la fonction "suivant" ? En gros j'aimerais récupérer la valeur de depart depuis la fonction "suivant" et le donner à "start" à chaque appel de la fonction !

Toute aide est la bienvenue, encore plus si il y a un gros problème dans mon code.

PS : c'est un travail loin d'être terminé, donc j'aimerais surtout une réponse à la question actuelle plutôt que des remarques sur le travail en général ( je sais très bien que c'est encore loin de ressembler à une liste doublement chaînée, je dois encore faire la fonction précédent, et ajouter des fonctions pour allouer et libéré de la mémoire, mais pour l'instant j'y vais un problème à la fois ! :) )

1 réponse

dx3d Messages postés 68 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 juillet 2017
10 mai 2014 à 20:30
C'est bon j'ai trouvé !
J'ai juste eu besoin de faire :

depart=suivant(tabVAL, tabIND, depart);
depart=suivant(tabVAL, tabIND, depart);


Et ensuite la valeur était sauvegarder comme un con j'avais oublié que je devais retourner la valeur quelque part pour que ça soit récupéré ! x)
0