Ryad Mehiri 60fd5e5b77 F9 : découper categorie pour ramener M de 14 à 5
categorie enchaînait 13 décisions (if imbriqués, || et &&) : M = 14,
au-dessus de l'objectif M <= 10. Elle est découpée par sens de
l'opération : categorie (M = 3), categorie_debit (M = 5),
categorie_credit (M = 5), categorie_gros_credit (M = 3), plus le
prédicat est_week_end (M = 1) qui remplace les tests jour % 7 == 5 ||
jour % 7 == 6 et jour % 7 < 5.

Mêmes catégories sur tout le domaine (montant de -50 000 à 50 000,
jour % 210, client % 10 : 210 millions de combinaisons testées).
Complexité inchangée (O(1)). Empreinte inchangée (ff68d260a7a58441).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 10:57:35 +02:00
2026-10-21 08:17:46 +02:00
2026-10-21 08:17:46 +02:00

TD3 — Complexité algorithmique (R5.A.04)

Fichiers

  • banque.c : le programme à analyser et à optimiser
  • evaluer.sh : vérifie votre solution et mesure son temps d'exécution pour le concours

Démarrage

gcc -O2 banque.c -o banque
time ./banque                      # notez le temps et l'empreinte
gcc -O0 -g -pg banque.c -o banque_pg
./banque_pg && gprof ./banque_pg gmon.out > profil_avant.txt

Règles

  • L'empreinte affichée doit rester ff68d260a7a58441.
  • Interdit : modifier les constantes, alea, generer_transactions ou le format du rapport, écrire les résultats en dur, utiliser des threads ou des bibliothèques externes.
  • Autorisé : changer les signatures, réorganiser main, ajouter fonctions et structures, utiliser la bibliothèque standard du C.

Rendu

  • Un commit par optimisation.
  • COMPTE_RENDU.md à la racine : complexités avant / après de F1 à F10, profils gprof avant / après, justification de chaque optimisation.
  • Concours : ./evaluer.sh banque.c <votre_nom> vérifie l'empreinte et mesure le temps. La complexité cyclomatique est calculée à la main et vérifiée par l'enseignant.
S
Description
No description provided
Readme 1.1 MiB
Languages
C 89.5%
Shell 10.5%