#include #include #include #include #include "mesure.h" enum { NB_ARGS_MIN = 3 }; void usage (char *commande); int est_un_entier (char *s); int main (int argc, char *argv[]) { unsigned long r; size_t i; if (argc < NB_ARGS_MIN) usage (argv[0]); for (i = 2; i < argc; i++) if (!est_un_entier (argv[i])) usage (argv[0]); if (!strcmp ("somme", argv[1])) r = msr_somme (argv + 2, argc - 2); else if (!strcmp ("max", argv[1])) r = msr_max (argv + 2, argc - 2); else if (!strcmp ("doublon", argv[1])) r = msr_doublon (argv + 2, argc - 2); else if (!strcmp ("repetition", argv[1])) r = msr_repetition (argv + 2, argc - 2); else usage (argv[0]); printf ("%ld", r); return EXIT_SUCCESS; } void usage (char *commande) { printf ("usage %s opération \n" "opérations disponibles :\n" " somme n\n" " max n p\n" " doublon n p\n" " repetition n\n", commande); exit (EXIT_FAILURE); } int est_un_entier (char *s) { if (*s == '+' || *s == '-') s++; if (!isdigit (*s)) return 0; s++; while (isdigit (*s)) s++; return *s == '\0'; }