• Aucun résultat trouvé

2 Itérations dans un tableau par programmation fonctionnelle

N/A
N/A
Protected

Academic year: 2022

Partager "2 Itérations dans un tableau par programmation fonctionnelle"

Copied!
2
0
0

Texte intégral

(1)

TD10 – Pointeurs sur fonctions

Langage C (LC4) semaine du 5 au 11 avril 2010

1 Utilisation simple

Question 1. Écrire une fonctionvoid doubler(int n, int * tableau)qui multiplie par 2 chacun desnéléments du tableau.

Question 2. Écrire une fonctionvoid appliquer_tableau(int (*f)(int), int n, int

*tableau)qui applique une fonctionfà chacun desnéléments dutableau.

Question 3. Réécrire doubleren utilisant appliquer_tableau. On pourra s’aider d’une fonctionint fois_deux(int i)qui renvoie le double de l’entier qui lui est donné en ar- gument.

2 Itérations dans un tableau par programmation fonctionnelle

2.1 Extréma d’un tableau

Question 4. Écrire une fonctionint minimum(int n, int * tableau)qui calcule le plus petit élément dutableausupposé de taillen. Sinvaut zéro (tableau vide), alors on renverra la constanteINT_MAX1

Question 5. Que faut-il changer pour calculer le plus grand élément du tableau (et renvoyer INT_MINsi le tableau est vide) ?

Question 6. Écrire une fonctionextremumqui calcule l’extrémum d’un tableau suivant un ordre et une valeur par défaut donnés en argument. On supposera que l’ordre/donné en argument est une fonction qui prend deux entiersaetben argument et renvoie une valeur non nulle si et seulement sia / b.

Question 7. Réécrire les fonctions minimumet maximumen utilisant extremum. On pourra définir des fonctions auxiliairesordre_minimum,ordre_maximum.

2.2 Somme des éléments d’un tableau

Question 8. Écrire une fonctionint somme(int n, int * tableau)qui calcule la somme des éléments dutableausupposé de taillen. Si le tableau est vide, alors on renverra 0.

1Cette constante ainsi queINT_MINsont définies danslimits.h

1

(2)

Question 9. Sur ce modèle, écrire une fonctioniterationsqui, étant donnés un opérateur

>, une valeur initialeZ et un tableaut, calcule(((Z>t0)>t1). . .>tn−2)>tn−1.

Question 10. Réécrire la fonctionsommeen utilisantiterations. 2.3 Généralisation

Question 11. Pourquoi n’est-il pas possible de réécrire la fonction extremumen utilisant directementiterations?

Question 12. Pour pallier cet inconvénient, nous allons supposer que l’opérateur>donné en argument deiterationsprend un argument supplémentaire de typevoid *, et que cet argument supplémentaire est aussi fourni en argument deiterationsqui se contentera de le passer à l’opérateur>.2

Modifier la fonctioniterationsdans ce sens.

Puis, grâce à ces modifications, réécrire la fonctionextremumen utilisant directement la nou- velle version deiterations, avec l’argument supplémentaire bien choisi. Puis appliquer en réécrivant les fonctionsminimumetmaximum.

On rappelle quevoid *est un type permettant de manipuler un pointeur vers des données quelconques : pour tout typeT, une donnée de typeT*est de typevoid *.

2.4 Comptages

Question 13. Écrire, en utilisant iterations, une fonctionpairsqui permet de compter dans un tableau le nombre d’éléments pairs.

Question 14. Généraliser en écrivant une fonction compte qui, en utilisant iterations, permet de compter le nombre d’éléments vérifiant un certain prédicatP. On supposera que P est donné sous la forme d’une fonction prenant un argument entieraet renvoyant une valeur non nulle si et seulement siP(a)est vraie.

Question 15. Que faudrait-il faire si on voulait passer par les étapes intermédiaires : – comptage des éléments divisibles par un entierddonné en paramètre

– comptage des éléments plus petits qu’un entierdau sens d’un ordre/donné en paramètre (la divisibilité pouvant être vue comme un cas particulier)

2Cet argument est appeléfermeture(ouclosureen anglais).

2

Références

Documents relatifs

[r]

C’est donc dans ou de cet espace qu’est née une littérature dont « Robben Island » est devenue le symbole?. Il est important de noter que cette littérature revêt une

Clapier-valladon (1980) (2) propose, de manière pratique, trois prin- cipales étapes d'analyse de contenu thématique: des lectures répétées nous familiarisent avec le

CHAP N5 Fiche D’Exercices N°3 : valeurs approchées et arrondis d’un nombre1.

[r]

La décision n'est le résultat d'aucune erreur matérielle et le Conseil de l'Ordre n'a commis, selon toute apparence, aucune erreur manifeste d'appréciation en

d'avoir une balle plongeante Service Apprentissage de la position de départ, prise de balle haute, prise raquette. 3 Defendre une zone Jeu au filet Attitude d'attention

Mon employeur se porte garant, prend fait et cause et répond financièrement des conséquences de toute faute et/ou négligence que j’aurais pu commettre dans l’exercice de