Question A1 : Quelles sont les entrées, quelles sont les quatre sorties ?
Question A2 : Calculez les équations des sorties en fonction des entrées. Si vous utilisez des calculs intermédiaires utilisez les noms proposés. Vous pouvez utiliser des calculs algébriques, ou des tableaux de Karnaugh, ou combiner les deux.
Question A3 : Donnez un schéma d'un circuit équivalent (mêmes entrées, mêmes sorties, mais moins de composants)
#include <stdio.h> void bsuiv(int i) { int r,d; r=i%2; d=i/2; if (d>0) bsuiv(d); printf("%d",r); } void main(void) { int n; printf("entrez n (entier positif ou nul) : "); scanf("%d",&n); bsuiv(n); printf("\n"); }En particulier, qu'affiche t'il si on entre : 0 1 2 4 6
#include <stdio.h> #include <conio.h> #include "perso.h" #define DIM 500 typedef int tableau[DIM]; /* prototypes (déclaration) des fonctions présentes dans le fichier perso.h */ int saisir(tableau t); void afficher(tableau t, int nb); int position(tableau t, int nb, int reference); int existe(tableau t, int nb, int reference); void trier(tableau t, int nb); void main(void) { tableau tab_ref; int taille_reelle, ref; char reponse; puts("entrez toutes les références en magasin"); taille_reelle=saisir(tab_ref); trier(tab_ref,taille_reelle); afficher(tab_ref,taille_reelle); do { puts("entrez une référence"); scanf("%d",&ref); if (existe(tab_ref, taille_reelle,ref)) { printf("la référence existe, elle est en position "); printf(": %d\n",position(tab_ref,taille_reelle,ref)); } else puts("la référence n'est pas disponible"); printf("Q pour quitter, autre touche pour continuer"); reponse=getche(); } while (reponse != 'Q'); }Ce programme permet de gérer et retrouver des références de pièces dans un magasin (dans la réalité, on mettrait toutes ces références dans un fichier au lieu de saisir les données à chaque fois).
Le but de cette partie est d'écrire le fichier "perso.h" qui contient la description des fonctions utilisées dans le programme.
Question C1 : écrire la fonction afficher qui affiche toutes les références existantes.
Question C2 : écrire la fonction position qui retourne la position (entre 0 et nb-1)d'une référence dans le tableau.
exemple : si tab_ref contient :
3
|
1024
|
2
|
458
|
1
|
113
|
0
|
53
|
Question C3 : écrire la fonction existe qui retourne vrai (1) si la référence donnée est disponible dans le tableau, et retourne faux (0) sinon.
Question C4 : écrire la fonction trier qui trie le tableau par ordre croissant. Cette fonction n'étant appelée qu'une fois, elle n'a pas besoin d'être rapide (mais ce n'est pas interdit).
Remarque partie C: il est inutile d'écrire la fonction saisir qui saisit (demande à l'utilisateur) toutes les références et les met dans le tableau, et retourne le nombre de références saisies.
Remarques générales : Les trois parties sont indépendantes. Vous pouvez répondre aux questions dans l'ordre qui vous convient, excepté la question C4 qui doit être traitée en dernier (donc quand vous avez traité les autres ou si vous n'arrivez pas à traiter les autres). A l'intérieur d'une même partie, une question peut utiliser le résultat d'une question précédente même si cette question n'a pas été traitée.
pour voir les réponses, cliquez ici
pour voir l'histogramme des notes obtenues à cet examen, cliquez ici
pour calculer la note que vous auriez obtenue, cliquez ici.
Patrick TRAU, ULP - IPST 5/6/97