Boris ENG

PhD Student in Computer Science, Team LoVe, LIPN (Université Sorbonne Paris Nord, France) [last name][first name]@hotmail.fr
« Return to Teaching

Entraînement sur les tableaux en C

Fonctions sur les tableaux

  1. int eqtab(int tab1[], int tab2[], int taille1, int taille2) qui renvoie TRUE si les tableaux ont les mêmes éléments et FALSE sinon.

  2. int index(int x, int tab[], int taille) qui renvoie l’indice du premier x s’il est dans le tableau, sinon -1.

  3. int occ(int x, int tab[], int taille) qui renvoie le nombre de fois que x apparaît dans tab.

  4. int bounded_by(int tab[], int taille, int limite) qui renvoie TRUE si tous les éléments de tab sont inférieurs (<=) à limite et FALSE sinon.

  5. int palindrome(int tab[], int taille) qui renvoie TRUE si le tableau est palindrome et FALSE sinon. Un tableau est palindrome lorsqu’il est la fusion d’un tableau et de son inverse. Par exemple : {1, 2, 1} ou {1, 2, 3, 3, 2, 1}.

Tester les fonctions

Mettez ces tests dans votre fonction main. Passez-vous tous les tests ? (1=correct, 0=incorrect) Si ce n’est pas le cas, corrigez vos fonctions (ou les tests s’ils sont incorrects).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
int t0[1] = {1};
int t1[3] = {8, 1, 4};
int t2[3] = {4, 1, 8};
int t3[4] = {8, 1, 4, 1};
int t4[3] = {1, 2, 1};
int t5[4] = {1, 2, 2, 1};

printf("test eqtab : %d\n", eqtab(t1, t1, 3, 3));
printf("test eqtab : %d\n", !eqtab(t1, t2, 3, 3));
printf("test eqtab : %d\n", !eqtab(t1, t3, 3, 4));

printf("test index : %d\n", index(0, t1, 3)==-1);
printf("test index : %d\n", index(8, t1, 3)==0);
printf("test index : %d\n", index(4, t1, 3)==2);

printf("test occ : %d\n", occ(8, t3, 4)==1);
printf("test occ : %d\n", occ(0, t3, 4)==0);
printf("test occ : %d\n", occ(1, t3, 4)==2);

printf("test bounded_by : %d\n", !bounded_by(t1, 3, 0));
printf("test bounded_by : %d\n", bounded_by(t1, 3, 8));
printf("test bounded_by : %d\n", bounded_by(t1, 3, 9));

printf("test palindrome : %d\n", !palindrome(t1, 3));
printf("test palindrome : %d\n", palindrome(t4, 3));
printf("test palindrome : %d\n", palindrome(t5, 4));

Traitement sur les tableaux

  1. créer un nouveau tableau qui contient les mêmes éléments que tab mais à l’envers.

  2. inverser les éléments de tab sans créer de nouveau tableau (par échange successif).

  3. faire “remonter” le plus grand élément de tab à la fin (dernier indice).

  4. utiliser l’idée précédente pour trier tab de façon croissante. Vous venez de réaliser l’algorithme de “tri à bulles”.

  5. modifier le programme pour trier dans l’ordre inverse.

  6. créer un programme qui mélange de façon aléatoire les éléments de tab avec utilisant rand().