// Proprietaire Antoine Chapusot #include #define NLECT 10 // nombre de cases du tableau void ecrire (char enr); // déclaration des fonctions void lire (); int nvlect=NLECT; // nombre de cases vides int tlect=0, qlect=0; // tete et queue de lecture int lect_actif=0; // temoin d'activite char Tampon [NLECT]; // tableau int main(void) // fonction principale (executee en premier) { ecrire('c'); getchar(); ecrire('h'); getchar(); ecrire('a'); getchar(); ecrire('p'); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); ecrire('c'); getchar(); ecrire('h'); getchar(); ecrire('a'); getchar(); ecrire('p'); getchar(); ecrire('c'); getchar(); ecrire('h'); getchar(); ecrire('a'); getchar(); ecrire('p'); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); lire(); getchar(); return 0; } // {A} et {B} sont des etiquettespour vous reperer dans les tests if-else void lire () { if (nvlect < NLECT) // {B} y a t il des cases non vides? (pas vide?) { // {B} oui alors: lect_actif=1; // actif = on va acceder au tableau printf("%c\n", Tampon[tlect]); // sortie de la valeur a l'index tlect if (tlect == NLECT) tlect=0; /* On augmente l'indice et Test pour eviter */ else tlect=tlect+1; /* que l'indice deborde du tableau */ nvlect=nvlect+1; // une case libre de plus lect_actif=0; // on a fini nos operations } else {printf("tampon vide\n");} // {B} non alors on affiche une erreur } void ecrire (char enr) { if (nvlect > 0) // {A} il y a des cases vide? (pas plein?) { // {A} oui alors: lect_actif=1; // actif = on va acceder au tableau Tampon[qlect]=enr; // on ecrit enr dans la case "qlect" du tableau if (qlect == NLECT) qlect=0; /* On diminue l'indice et Test pour eviter */ else qlect=qlect+1; /* que l'indice deborde du tableau */ nvlect=nvlect-1; // une case libre en moins lect_actif=0; // on a fini nos operations } else {printf("tampon plein\n");} // {A} non alors on affiche une erreur }