Programmation C: Verification d'une permutation

joshua509 Messages postés 2 Date d'inscription jeudi 31 décembre 2009 Statut Membre Dernière intervention 9 février 2010 - 9 févr. 2010 à 23:53
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 11 févr. 2010 à 00:48
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

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
10 févr. 2010 à 08:54
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
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
10 févr. 2010 à 11:14
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é. -
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
11 févr. 2010 à 00:48
Salut, effectivement vu la signature de la fonction c'est du C et non du C#.
0