-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstructionp2d.h
More file actions
126 lines (101 loc) · 5.38 KB
/
instructionp2d.h
File metadata and controls
126 lines (101 loc) · 5.38 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include"deplacementp2d.h"
//@ requires un pointeur sur une pile *p
//@ assigns deux entiers a et b
//@ ensures depile deux entiers de p et empile leur somme
void addition(pile* p);
//@ requires un pointeur sur une pile *p
//@ assigns deux entiers a et b
//@ ensures depile deux entiers de p et empile leur différence
void soustraction(pile* p);
//@ requires un pointeur sur une pile *p
//@ assigns deux entiers a et b
//@ ensures depile deux entiers de p et empile leur produit
void multiplication(pile* p);
//@ requires un pointeur sur une pile *p
//@ assigns deux entiers a et b
//@ ensures depile deux entiers de p et empile leur quotient ou 42 si a est nul
void division(pile* p);
//@ requires un pointeur sur une pile *p
//@ assigns deux entiers a et b
//@ ensures depile deux entiers de p et empile b modulo a ou 0xbadc0de si a est nul
void reste(pile* p);
//@ requires un pointeur sur une pile *p
//@ assigns un entier a
//@ ensures depile un entier de p et empile 0 s'il est non nul ou 1 s'il est nu
void non_logique(pile* p);
//@ requires un pointeur sur une pile *p
//@ assigns deux entiers a et b
//@ ensures depile deux entiers de p et empile 1 si b>a ou 0 sinon
void plus_grand_que(pile* p);
//@ requires un pointeur sur un entier direction
//@ assigns noting
//@ ensures change direction en un entier aléatoire
void hasard_direction(int* direction);
//@ requires un pointeur sur un entier direction et sur une pile p
//@ assigns un entier x
//@ ensures dépile un entier x de p et change *direction en x modulo 8
void entier_direction(int* direction, pile* p);
//@ requires un pointeur sur un entier direction
//@ assigns nothing
//@ ensures change *direction en (*direction - 1) modulo 8
void gauche_45(int* direction);
//@ requires un pointeur sur un entier direction
//@ assigns nothing
//@ ensures change *direction en (*direction + 1) modulo 8
void droite_45(int* direction);
//@ requires un pointeur sur un entier direction et une pile p
//@ assigns un entier x
//@ ensures dépile x de *p et change *direction en 2 si x est nul ou 6 sinon
void conditionnelle_horizontale(int* direction, pile* p);
//@ requires un pointeur sur un entier direction et une pile p
//@ assigns un entier x
//@ ensures dépile x de *p et change *direction en 4 si x est nul ou 0 sinon
void conditionnelle_verticale(int* direction, pile* p);
//@ requires un pointeur sur un entier direction et une pile p
//@ assigns un entier x
//@ ensures dépile x de *p et change *direction en 1 si x est nul ou 5 sinon
void conditionnelle_diagonale_droite(int* direction, pile* p);
//@ requires un pointeur sur un entier direction et une pile p
//@ assigns un entier x
//@ ensures dépile x de *p et change *direction en 3 si x est nul ou 7 sinon
void conditionnelle_diagonale_gauche(int* direction, pile* p);
//@ requires un pointeur sur une pile p
//@ assigns un entier x
//@ ensures dupplique le sommet de p
void dupliquer(pile* p);
//@ requires un pointeur sur une pile p
//@ assigns deux entiers x
//@ ensures échange la position des deux entiers au sommet de p
void echanger(pile *p);
//@ requires un pointeur sur une pile p
//@ assigns nothing
//@ ensures dépile un entier de p et l'affiche sur le flux stdout
void afficher_entier(pile* p);
//@ requires un pointeur sur une pile p
//@ assigns nothing
//@ ensures dépile un entier de p et affiche le caractère correspondant (code ASCII) sur le flux stdout
void afficher_caractere(pile* p);
//@ requires trois entiers directoin, largeur et hauteur et deux pointeurs sur une coordonnée position et une pile p
//@ assigns un entier n
//@ ensures dépile un entier n de *p et appelle n fois la fonction deplacement
void pont(int direction, int largeur, int hauteur,coord* position, pile* p);
//@ requires une grille de caractères grille, deux entiers largeur et hauteur correspondant à la grille et un pointeur sur une pile p
//@ assigns deux entiers x et y
//@ ensures dépile deux entiers x et y et empile le code ASCII du caractère de grille[x][y] si grille[x][y] existe, empile 0 sinon
void get(char** grille, int largeur, int hauteur, pile *p);
//@ requires une grille de caractères grille, deux entiers largeur et hauteur correspondant à la grille et un pointeur sur une pile p
//@ assigns trois entiers x, y et z
//@ ensures dépile trois entiers x, y et z et remplace le caractère de grille[x][y] par celui ayant z comme code ASCII si grille[x][y] existe, ne fait rien sinon
void put(char** grille, int largeur, int hauteur, pile *p);
//@ requires un pointeur sur une pile p
//@ assigns un entier x
//@ ensures demande un entier x à l'utilisateur et l'empile sur *p
void demander_entier(pile *p);
//@ requires un pointeur sur une pile p
//@ assigns un caractère c
//@ ensures demande un caractère c à l'utilisateur et empile son code ASCII sur *p
void demander_caractere(pile *p);
//@ requires une grille de caractère grille, deux entier largeur et hauteur et trois pointeur sur une coordonée position, deux entiers direction et mode_ascii et une pile p
//@ assigns nothing
//@ ensures si *ode_ascii vaut 1, empile le code ASCII du caractère présent à *position dans grille, sauf si c'est '"'. Dans ce cas, change *mode_ascii en 0. Si *mode_ascii vaut 0, appelle une des fonctions ci-dessus en fonction du caractère présent à *position dans grille. Si c'est '"', change *mode_ascii en 1
void pas(char** grille, int largeur, int hauteur, coord* position,int* direction, pile* p, int* mode_ascii);