Programmation C: Verification d'une permutation

Signaler
Messages postés
2
Date d'inscription
jeudi 31 décembre 2009
Statut
Membre
Dernière intervention
9 février 2010
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Comment rendre cette fonction fonctionnelle pour un tableau de n'importe quel taille:
Voici la fonction:
int Permutation(int tab[],int n)
{
int i=0;
if(tab[i]!=tab[i+1] && tab[i]!=tab[i+2] && tab[i]!=tab[i+3] && tab[i+1]!=tab[i+2] && tab[i+1]!=tab[i+3] && tab[i+2]!=tab[i+3])
{
return 0;
}
else
return 1;
}

Je cherche une méthode qui permet de vérifier si les valeurs de toutes les cases du tableau sont différentes les une des autres pour un tableau de n'importe quel taille en utilisant une boucle.
AIDEZ MOI S'IL VOUS PLAIT MERCI

3 réponses

Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour,
rapidement si tu ne peux pas trier tes données auparavant:
il te faut 2 boucles imbriquées
for (j= 0 ;j < n ; j++)
{
for (i = j+1; i < n ; i++)
{
if ( tab[j] == tab[i])
return 1;
}
}
return 0;


louis
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Salut

Le code de Louis14 fonctionne. Tu peux même l'optimiser :
for (j = 0; j < n - 1; j++)
...
(ça t'évitera 2 conditions et 2 attributions, c'est presque rien mais bon, presque rien*beaucoup, ça peut donner quelque chose à la fin)

Cependant, si tu codes en C, merci de poster sur le bon forum la prochaine fois. Le forum C/C++ est accessible via l'adresse www.cppfrance.com (ou le lien en haut de la page).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
Salut, effectivement vu la signature de la fonction c'est du C et non du C#.