Programme de permutation des éléments d un tableau

Fermé
nady93 Messages postés 2 Date d'inscription dimanche 9 décembre 2012 Statut Membre Dernière intervention 30 octobre 2013 - 9 déc. 2012 à 19:12
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 10 déc. 2012 à 11:46
Bonjour, j ai un devoir de tp pour demain"le sujet est de créer une procedure qui inverse 2 éléments puis une autres qui inverse les éléments d un tableau en utilisant la 1ere procedure,mon code ne fonctionne pas ,j crois que j ai galéré avec les pointeurs (que j comprends pas bcp) pouvez-vous m'aider svp?


#include<stdio.h>
#include<conio.h>
void permute(int *a,int *b)
{int aux;
aux=*a;
*a=*b;
*b=aux;
}
void permtab(int TAB[],int n)
{int i;
for (i=0;i<n;i++)
{ permute(&TAB[i],&TAB[n-1-i]);}}
int main()
{ int n,i,A,B;
int TAB[100];
do
{printf("donner la taille du tableau");
scanf("%d",&n);
if (n<0)
{printf("erreur redonner n:");
}}
while (n>0);
for (i=0;i<n;i++)
{printf("TAB[%d]=",i);
scanf("%d",&TAB[i]);
}
printf("l affichage du tableau est:");
for (i=0;i<n;i++)
{printf("TAB[%d]=%d\n",i,TAB[i]);
}
printf("donner A");
scanf("%d",&A);
printf("donner B");
scanf("%d",&B);
permute(&A,&B);
printf("les nouveaux nombres obtenus sont A=%d,B=%d:",A,B);
printf("le nouveau tableau est:");
permtab(*TAB[],n);
for (i=0;i<n;i++)
{printf("TAB[%d]=%d",i,TAB[i]);}
getch();
}

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
10 déc. 2012 à 11:46
Salut nady93,

Si tu permutes :
- le 1er élément avec le dernier
- le 2ème élément avec l'avant dernier
- le 3ème élément avec l'avant-avant dernier
- etc.

lorsque tu arriveras à la moitié du tableau, tu auras terminé tes permutations.

si tu vas au-delà, tu vas permuter des choses que tu avais déjà permutées (et donc remettre ton tableau dans son état d'origine.

Donc, dans permtab, tu devrais faire :

for (i = 0; i < (n / 2); i++)

Autrement, il y a des petites erreurs :

- } while (n < 0); au lieu de while (n > 0); sinon, ta boucle ne s'arrête pas alors que tu as récupéré une valeur
- permtab(TAB,n); au lieu de permtab(*TAB[],n); sinon, tu as une belle erreur de syntaxe
- return 0; en dernière ligne de ton code


Dal
2