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
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NELEM(t) (sizeof(t)/sizeof(t[0]))
typedef struct
{
char name[32];
void (*call) (void);
}function;
void Big_Mac( void );
void Cheeseburger( void );
void Royal_Bacon( void );
void Big_Tasty( void );
void Royal_O_Fish( void );
int compar(const void *val1, const void *val2);
int main( void )
{
size_t i;
char functionName[32];
/* Liste des fonctions triee par ordre alphabétique */
function functions[] = { { "Big_Mac" , Big_Mac },
{ "Big_Tasty" , Big_Tasty },
{ "Cheeseburger" , Cheeseburger },
{ "Royal_Bacon" , Royal_Bacon },
{ "Royal_O_Fish" , Royal_O_Fish } };
for( i=0 ; i<NELEM(functions) ; i++ ) {
puts(functions[i].name);
}
printf("Faites votre choix : "); fflush(stdout);
/* Lecture du nom de la fonction a appeler */
if( fgets(functionName, sizeof functionName, stdin)!=NULL) {
char *nl;
function *match;
/* Suppression du '\n' */
if( (nl = strchr(functionName, '\n'))!=NULL) {
*nl = '\0';
}
/* Recherche ... */
match = bsearch(functionName, functions, NELEM(functions), sizeof *functions, compar);
if( match!=NULL ) {
match->call();
} else {
puts("Aucune correspondance trouvee");
}
}
return 0;
}
int compar(const void *val1, const void *val2)
{
const function *func1 = val1;
const function *func2 = val2;
return strcmp(func1->name, func2->name);
}
void Big_Mac( void )
{
puts("talon inférieur Mac, sauce Mac, oignons reconstitués, laitue émincée, tranc"
"he de fromage, pâté de boeuf régulier (10:1), talon supérieur Mac, sauce Ma"
"c, oignons reconstitués, laitue émincée, cornichons (x2), pâté de boeuf rég"
"ulier (10:1), couronne Mac.");
}
void Cheeseburger( void )
{
puts("couronne sans sésame, moutarde, ketchup, oignons reconstitués, cornichon, t"
"ranche de fromage, pâté de boeuf régulier (10:1), talon.");
}
void Royal_Bacon( void )
{
puts("couronne avec sésame, moutarde, ketchup, oignons en lamelles, cornichons (x"
"2), tranche de fromage, pâté de boeuf(4:1), tranche de fromage, talon, avec"
" 2 tranches de bacon entre les cornichons et le pâté de boeuf(4:1).");
}
void Big_Tasty( void )
{
puts("couronne large, sauce grillée, oignons en lamelles, salade Tasty, tranches "
"de tomate (x2), tranche de fromage emmental (ou de bacon), pâté de boeuf la"
"rge (3:1), tranches de fromage emmental (x2), talon large.");
}
void Royal_O_Fish( void )
{
puts("couronne avec sésame, sauce tomate avec du persil, laitue émincée, tranche "
"de tomate (x1), patty Filet, talon.");
} |
Partager