Tableaux

Fermé
parisienne941 Messages postés 5 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 8 février 2016 - 7 févr. 2016 à 19:24
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 9 févr. 2016 à 17:48
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
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
7 févr. 2016 à 20:39
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.
0
parisienne941 Messages postés 5 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 8 février 2016
7 févr. 2016 à 21:47
je comprend pas ce que tu veux dire par la lettre courante?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
7 févr. 2016 à 22:08
Par exemple :

lettre : Caractere
mot : String
Pour lettre dans mot Faire
Afficher lettre
Fin Pour

Dans la boucle for, lettre est la variable "courante". C'est sur elle qu'on effectue l'itération.
0
parisienne941 Messages postés 5 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 8 février 2016
8 févr. 2016 à 00:30
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");
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
8 févr. 2016 à 12:06
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.
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 8/02/2016 à 15:26
Salut fiddy et parisienne941,

@fiddy: heu... tu es sûr de ton test :
Si taille(i) == taille (j)
? Tu veux dire
Si 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
0