Ce document a été produit par HEVEA.
Votre browser peut avoir a être configuré pour afficher correctement
certains symboles.
Reportez-vous à la documentation d'HEVEA.
i
et de p
avant exécution de la boucle for
. Qu'affiche le programme
? Quel est le contenu du tableau i
à la fin du programme ?
void f(int **i) { *((*i++)++)++;*((*i)++)--; } void main(void) { int i[2][5] = {{0, 1, 2, 3, 4}, {2, 3, 4, 5, 6}}, *p[2] = {*i, *(i+1)}; int j; for (j=0; j < 5; j++) { f(p); printf("%d %d\n", *(*p-1), *(*(p+1)-1)); } }
float (*d1[2])(int);
char *(*(*d2)(int))(int)
;
Window
pour représenter une fenêtre, et un
type WindowList
pour représenter une liste de fenêtres.
Proposer aussi un type Bool
pour représenter le type
booléen.
qui teste si les fenêtresBool Recover(Window w1, Window w2) ;
w1
et w2
se recouvrent
(ont une zone commune à l'écran).
qui retourne dans une liste de fenêtres les zones visibles (qui sont des rectangles) deWindowList WindowVisible(Window w1, Window w2) ;
w1
quand w2
est en
avant-plan de w1
. Les zones visibles ne doivent pas se
recouvrir.
qui retourne dans une liste de fenêtres les zones visibles deWindowList WindowListVisible(Window w, WindowList wlist) ;
w
quand les fenêtres de la liste wlist
recouvrent
la fenêtre w
. Les zones visibles ne doivent pas se
recouvrir. (Suggestion: appeler la fonction WindowVisible
sur la premiere fenetre de wlist
, puis recommencer avec les
zones trouvées précédemment avec la seconde fenêtre de
wlist
, etc)
On propose de représenter cette hiérarchie par le type suivant:
L'ordre dans la liste des fenêtres soeurs détermine leur profondeur dans le recouvrement (d'arrière-plan vers avant-plan).typdef struct noeud { Window *fenetre; WindowList visibles; /* Liste des zones visibles */ struct noeud *soeurs; /* Liste des noeuds des fenetres soeurs */ struct noeud *filles; /* Liste des noeuds des fenetres filles */ /* dans l'ordre de leur profondeur dans le recouvrement */ struct noeud *parente; /* Noeud de la fenetre parente */ } noeud, *WindowTree ;
qui renvoie, pour une hiérarchie de fenêtresWindowTree Locate(int x, int y, WindowTree wt) ;
wt
, un
pointeur sur le noeud de cette hiérarchie tel que le point de
coordonnées (x ,y) est dans une zone visible de la fenêtre pointée
par le champ fenêtre de ce noeud. Elle renvoie NULL
si le
point est en dehors de la fenêtre associée à wt
.
qui calcule la liste des zones visibles (champvoid ComputeVisible(WindowTree wt) ;
visible
) de
la fenêtre associée au noeud wt
. Si une telle liste
existait déjà, cette procédure détruit l'ancienne liste.
Ce document a été traduit de LATEX par HEVEA.