j'ai donc un tableau mur de 15*15 remplit de valeur.
lorsque je choisis une valeur de ce tableau j'aimerais qu'il me comptabilise le nombre de valeur identique adjacents.
J'ai écrit une fonction récursive mais j'ai droit à un débordement de pile. Je cherche donc une solution en C me permettant d'écrire une telle fonction.
voici la fonction récursive :
int Test(int ligne, int colonne, int valeur){
if(mur[ligne-1][colonne]== valeur) somme+=Test(ligne-1, colonne, valeur);
if(mur[ligne][colonne-1]== valeur) somme+= Test(ligne, colonne-1, valeur);
if(mur[ligne +1][colonne] == valeur) somme+= Test(ligne +1, colonne, valeur);
if(mur[ligne][colonne+1] == valeur) somme+= Test(ligne, colonne +1, valeur); return somme;}
j'essaye de construire une fonction qui grace à des boucles balayent ligne par ligne et par colonne le tableau en testant à chaque fois les valeurs rencontrées. je ne sais pas si j'ai été très clair. Toute aide est la bienvenue.
Merci Pékélé
Zeph Le 29/10/2005 à 22:08 heu il faudrait commencer par donner une fonction complete, on ne sait pas ce que vaut "somme" dans ton code par exempe.
sinon, avec ça, tu es sûr d'avoir une erreur quelque part, puisque tu ne testes jamais quand tu es en train de sortir de ta matrice. y'a moyen d'avoir une version corrigée du code, avant d'en venir à une solution avec des boucles ?

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
bon voilà, j'ai fait un rapide code en C qui remplit et affiche un tableau et teste s'il y a des valeurs identiques.
Mais ce n'est pas parfait, des suggestions ?
#include <stdio.h>
#include <math.h>
int mur[14][14],i,j;
int somme=0;
int x=0; int y=0;
int main (int argc, const char * argv[]) {
// insert code here...
printf("retourne le nombre de valeur adjacente dans un tableau\n");
int ligne, colonne;
//remplissage du tableau
for ( i=0;i<15;i++)
for (j=0;j<15;j++)
mur[i][j]=rand()%5;
//affichage du tableau
for ( i=0;i<15;i++)
for (j=0;j<15;j++)
printf("%i\t",mur[i][j]);
while(ligne !=16)
{
printf("\nligne:");
scanf("%i",&ligne);
printf("\ncolone:");
scanf("%i",&colonne);
printf("%d",mur[ligne][colonne],"\n");
printf("\n");
test(ligne,colonne,mur[ligne][colonne]);
printf("\nest présent :%i",somme);
}
}
test ( int ligne, int colonne, int valeur )
{
for ( i=0;i<15;i++){
for (j=0;j<15;j++){
if (mur[ligne+x][colonne]==valeur){x++;somme++;}
if (mur[ligne-x][colonne]==valeur){x++;somme++;}
if (mur[ligne][colonne+y]==valeur){y++;somme++;}
if (mur[ligne][colonne-y]==valeur){y++;somme++;}
}
}
return somme;
}
LAF Le 30/10/2005 à 15:20 ben déjà tu pourrais faire ta fonction sur un tableau plus petit. LOL !
Vut que tu ne veux que les valeur adjencente a la valeur de la case initial, limite a 4 ou 8 le nobre de boucle que fait ton programe. Une fois qu'il a testé les quatre ou huit case adjensente a celle de départ il s'arette.
J'espére être clair.
LAF ! ! ... !

"Je peux pas vous faire le cris du tube de colle." Dixi premier CD de Naheulbeuk
Soutenez la presse indépendante achetez Pirates mag. Je ne parle pas au cons, cela les instruit.
J'ai créé un topic avec un tutorial pour créer une alim 3V stabilisé avec le 5V fournit par le port USB avec en plus la posibilité d'utiliser le cable de liason GP32 <-> PC voir là :
[url]topics/48646-une-alim-3v-a-partir-du-prt-usb [/url]