• Aucun résultat trouvé

Travaux Dirig´es d’algorithmique n

N/A
N/A
Protected

Academic year: 2022

Partager "Travaux Dirig´es d’algorithmique n"

Copied!
2
0
0

Texte intégral

(1)

Travaux Dirig´ es d’algorithmique n

o

1

Cours d’informatique de Deuxi`eme Ann´ee

—L2.1—

Quelques exercices d’introduction

Quelques exercices de remise en forme et introduction de la notion de temps n´ecessaire `a l’ex´ecution d’un algorithme.

xExercice 1. (R´evisions)

Que font les programmes suivants ? 1. 1er programme :

1. #include <stdio.h> 16. int main(void)

2. #define MAX 2 17. {

3. 18. char t[MAX];

4. void toto(int *n, int p) 19. int i,j;

5. { 20.

6. *n = 3; 21. toto(&i, j);

7. p = 2; 22. printf("i=%d, j=%d\n", i,j);

8. *n = *n+p; 23. t[0] = ’a’;

9. } 24. t[1] = ’b’;

10. 25. printf("%c %c \n", t[0], t[1]);

11. void truc(int *n, char *c) 26. i = 0;

12. { 27. truc(&i, &t[i]);

13. *n = *n+1; 28. printf("%d %c %c \n", i, t[0], t[1]);

14. *c = ’X’; 29. }

15. }

2. 2eme programme :

1. #include <stdio.h> 19. int main(void)

2. 20. {

3. int bidule(int y,int *x) 21. int a,r;

4. { 22.

5. int p=1,i=1; 23. a=-1;

6. 24. r=bidule(5,&a);

7. if (y<=0) return 0; 25. printf("%d \n",r);

8. 26. }

9. while (y>p)

10. {

11. i++;

12. p=p*i;

13. }

14. if (y!=p) return 0;

15.

16. *x=i;

17. return i;

18. }

On indiquera l’´etat de chaque variable au cours de l’ex´ecution.

1

(2)

xExercice 2. (Multiplication de deux entiers)

1. On suppose que la touche ’*’de votre ordinateur est en panne. Comment faire pour calculer le produit de deux entiers netm?

Donner une estimation du nombre d’op´erations effectu´ees par l’ordinateur pour appliquer votre m´ethode ?

2. Multiplication ´egyptienne

Les anciens Egyptiens savaient additionner deux entiers, mutiplier et diviser un entier par2. Pour multiplier deux entiers, ils utilisaient l’algorithme suivant : fonction Mult(n, m entiers, n0) retourne un entier

{

xn; ym; r0; tantque x >0 faire {

si x est impair alors rr+y; xquotient(x,2);

y2y; }

retour(r) ; }

(a) D´ecomposer le calcul pour n= 19etm= 25.

(b) Estimer le nombre d’op´erations effectu´ees pour appliquer cette m´ethode.

(c) Le traduire enC. Que faut-il modifier pour avoir le produit de deux entiers quelconques ?

xExercice 3.(Rotation dans un tableau)

Le but de cet exercice est d’effectuer, dans un tableau de n caract`eres, la rotation `a gauche de k positions (0 < k < n). Par exemple, pour n = 8 et k = 3, le tableau

A B C D E F G H devient, apr`es rotation, D E F G H A B C Pour cel`a on propose trois solutions :

1. Utiliser un tableau auxiliaire.

2. Ecrire tout d’abord une fonction qui effectue une rotation `a gauche d’une seule position puis l’utiliser pour r´esoudre le probl`eme.

3. Ecrire une fonction qui inverse les ´el´ements de la portion de tableau d´elimit´ee par deux indices i et j (par exemple si i = 2 et j = 5, la fonction transforme le tableau pr´ec´edent en A B F E D C G H ), puis utiliser cette fonction pour r´esoudre le probl`eme.

xExercice 4. (Les structures)

On d´efinit la structure Point 2D de la mani`ere suivante :

struct point_2D{

int x;

int y;

};

typedef struct point_2D point;

1. Ecrire une fonction float distance(point pt1,point pt2)qui renvoit la dis- tance entre deux point.

2. Ecrire une fonction void translation(point * pt,int dx,int dy) qui fait translater le point pt `a l’aide des valeurs donn´ees par dx et dy

2

Références

Documents relatifs

Nous concluerons par un exercice visant ` a stocker des entiers de fa¸con efficace dans des tableaux de listes chaˆın´ ees.. x

iii) Dessiner un automate mod´elisant le jeu. Chaque ´etat repr´esente une situation diff´erente. Tout ´etat est initial sauf l’´etat dans lequel tous les jetons ont la

[r]

On peut, dans la fenêtre de Scilab copier et coller des lignes à l’aide de la souris (y compris les exemples donnés par l’aide) ; on peut aussi naviguer dans l’historique

La deuxi` eme famille est form´ ee des id´ eaux premiers principaux, c’est-` a-dire engendr´ es par un entier premier p, ou par un polynˆ ome P primitif et irr´ eductible dans Q

B– Distinction entre polynˆ omes et fonctions polynomiales Soit A un anneau commutatif?. Peut-on trouver un tel exemple avec A infini et

Montrer que tout module de type fini sur un anneau principal est de pr´ esentation finie.. Montrer que K est de type fini comme A-module, mais pas de pr´

Indiquer des corps quadratique et cubique (i.e. des extensions de Q de degr´ e 2 et 3 respectivement) qui sont totalement r´ eels, puis de tels corps qui ne sont pas totalement