Tableaux
parisienne941
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une question je voudrais savoir comment faire que pour dans un tableau de dimension 3*3. Qu'on puisse comparer toutes les valeurs presente et si celle ci sont repeter plusieurs fois et bien on remplace la valeur par un 0
J'ai une question je voudrais savoir comment faire que pour dans un tableau de dimension 3*3. Qu'on puisse comparer toutes les valeurs presente et si celle ci sont repeter plusieurs fois et bien on remplace la valeur par un 0
1 réponse
-
Bonjour,
Il suffit de faire une double boucle for.
1ère boucle for : tu parcours tous les éléments.
2ème boucle for : tu parcours tous les éléments à partir de la lettre courante. En cas d'égalité, tu remplaces par 0.
Je te laisse mettre ça en place.-
-
-
Desolé je ne comprend pas tout a fait ce que vous voulez me dire.
Je vous explique clairement ce que je voudrais pouvoir faire:
dans un tableau de 3*3 où sont initialisé des chiffres de 1 à 9 et s'il sont repeter plusieurs fois dans le meme tableu, mettre les case à 0 ;
alors j'ai essayer de faire la double boucle for mais je ne pense pas bien avoir compris
void verifcarre(int tab[3][3])
{
int i,j,k,l,m;
int erreur[3][3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
for(k=1;k<=9;k++)
{
if(tab[i][j]==k)
{
for(l=i+1;l<3;l++)
{
for(m=j+1;m<3;m++)
{
if(tab[l][m]==k)
{
erreur[l][m]=0;
erreur[i][j]=0;
}
erreur[i][j]=tab[i][j];
}
}
}
}
}
}
}
int main()
{
int tab[3][3]={ {9,1,1},
{2,9,4},
{6,7,5},
};
int i,j;
int erreur[3][3]={ {0,0,0},
{0,0,0},
{0,0,0},
};
verifcarre(tab)
for(j=0;j<3;j++)
{
printf("%d |",erreur[i][j]);
}
printf("\n");
} -
Bonjour,
int main()
Le bon prototype est : int main(void).
Et il ne faut pas oublier le return 0; final.
verifcarre(tab)
Il manque un ';'
De plus, tu te sers dans la fonction du tableau erreur. Il faut donc également le passer en argument.
for(j=0;j<3;j++) { printf("%d |",erreur[i][j]); }
Tu as oublié une boucle for sur i.
Dans la fonction verifcarre :
Pour simplifier, tu pouvez faire une seule boucle for de 0 à 9 (non inclu).
Cela aurait donné quelque chose comme :
Pour i de 0 à taille(tab) - 1 Faire :
Pour j de i à taille(tab) - 1 Faire :
Si taille(i) == taille (j) Alors :
Etc
Fin Si
Fin Pour
Fin Pour
Note : lorsque tu postes ton code, utilise plutôt la balise <code c> que <code>. Ca mettra de la belle couleur. -
Salut fiddy et parisienne941,
@fiddy: heu... tu es sûr de ton test :Si taille(i) == taille (j)
? Tu veux direSi tab[i] == tab[j]
? Si oui, attention, si tu travailles sur un tableau à une dimension, la condition de la première itération de la boucle j sera toujours vraie, car tu pars du même indice. A mon sens j doit alors partir de i + 1.
@parisienne941: c'est plus simple de travailler sur une seule dimension, ton traitement étant linéaire. Comme le C alloue la mémoire d'un tableau multidimensionnel de façon contiguë, tu peux "aplatir" ton tableau. Et faire, comme le dit fiddy, une boucle de 0 à 9 non inclus.
Enfin, c'est comme cela que je ferai :-)
Sinon, je n'ai pas compris à quoi sert le tableau "erreur"
Dal
-