ORGANIZED est un programme en C permettant de gérer un inventaire de matériel électronique dans un laboratoire virtuel. Le projet simule un atelier robotique où l'utilisateur peut stocker, manipuler et trier différents types de composants.
- Créer un système de gestion d'inventaire interactif
- Maîtriser les listes chaînées comme structure de données
- Implémenter des algorithmes de tri efficaces
- Développer une interface shell fonctionnelle
- Gérer la mémoire dynamique proprement
- Fonctionnalités - Description détaillée des commandes
- Architecture - Structure technique du projet
- Modèles de Données - Structures et entités
- Workflow - Flux de fonctionnement
- Contraintes Techniques - Règles et limitations
- Tests - Guide complet de test avec binaire de référence
- Objectifs Pédagogiques - Compétences visées
- Glossaire - Termes techniques
make./organizedWorkshop >> add WIRE usb, ACTUATOR button
WIRE n°0 - "usb" added.
ACTUATOR n°1 - "button" added.
Workshop >> disp
ACTUATOR n°1 - "button"
WIRE n°0 - "usb"
Workshop >> sort NAME
Workshop >> disp
ACTUATOR n°1 - "button"
WIRE n°0 - "usb"- Langage : C
- Compilation : via Makefile (rules:
all,re,clean,fclean) - Fonctions autorisées :
open,read,write,close,malloc,free - Code de sortie en erreur : 84 ## (
⚠️ Tres important ça mère) - Bibliothèque fournie :
libshell.a+shell.h
Un binaire de référence (fake_organized) et un fichier de test (example_test) sont fournis dans binary.zip pour tester le comportement attendu.
unzip binary.zip
chmod +x fake_organized example_test./fake_organized
Workshop >> add WIRE usb
WIRE n°0 - "usb" added.
Workshop >> disp
WIRE n°0 - "usb"cat example_test | ./fake_organizedWorkshop >> add WIRE a, WIRE b, SENSOR c
WIRE n°0 - "a" added.
WIRE n°1 - "b" added.
SENSOR n°2 - "c" added.Workshop >> add usb
Not valid arguments count (<TYPE> <NAME>).Workshop >> add usb noge
Invalid type of material.Workshop >> sort TYPE -r
Workshop >> disp
WIRE n°6 - "a"
WIRE n°3 - "d"
WIRE n°2 - "c"
WIRE n°1 - "b"
WIRE n°0 - "a"
SENSOR n°5 - "f"
SENSOR n°4 - "e"Contenu de example_test :
add WIRE a, WIRE b, WIRE c, WIRE d, SENSOR e, SENSOR f, WIRE a
disp
sort TYPE -r
disp
exitSortie attendue :
$ cat example_test | ./fake_organized
Workshop >> WIRE n°0 - "a" added.
WIRE n°1 - "b" added.
WIRE n°2 - "c" added.
WIRE n°3 - "d" added.
SENSOR n°4 - "e" added.
SENSOR n°5 - "f" added.
WIRE n°6 - "a" added.
Workshop >> WIRE n°6 - "a"
SENSOR n°5 - "f"
SENSOR n°4 - "e"
WIRE n°3 - "d"
WIRE n°2 - "c"
WIRE n°1 - "b"
WIRE n°0 - "a"
Workshop >> Workshop >> WIRE n°6 - "a"
WIRE n°3 - "d"
WIRE n°2 - "c"
WIRE n°1 - "b"
WIRE n°0 - "a"
SENSOR n°5 - "f"
SENSOR n°4 - "e"
Workshop >>Pour vérifier que votre programme fonctionne correctement :
# Tester avec le binaire de référence
cat example_test | ./fake_organized > expected_output.txt
# Tester avec votre implémentation
cat example_test | ./organized > your_output.txt
# Comparer les sorties
diff expected_output.txt your_output.txtSi aucune différence n'est affichée, votre implémentation est correcte ! ✅
- Tous les fichiers sources (
.c,.h) - Le Makefile
- La bibliothèque
libshell.a - Le header
shell.h - Binaire de référence (
binary.zipcontenantfake_organizedetexample_test) - Fichiers bonus dans un dossier
bonus/(si applicable)
À exclure : binaires, fichiers temporaires, fichiers objets
- Manipulation de listes chaînées (insertion, suppression, parcours)
- Algorithmes de tri (tri à plusieurs critères)
- Gestion de la mémoire dynamique
- Développement d'une interface utilisateur shell
- Gestion des erreurs et validation des entrées
- Optimisation algorithmique
Pour toute question sur le projet, référez-vous aux documents suivants :
- FEATURES.md pour les détails des commandes
- ARCHITECTURE.md pour la structure technique
- CONSTRAINTS.md pour les règles à respecter
- TESTING.md pour valider votre implémentation avec le binaire de référence
Pour vérifier que votre implémentation est correcte :
# Compiler votre projet
make
# Comparer avec le binaire de référence
cat example_test | ./organized > your_output.txt
cat example_test | ./fake_organized > expected_output.txt
diff your_output.txt expected_output.txt
# Si aucune différence : ✅ Votre implémentation est correcte !Consultez TESTING.md pour plus de tests détaillés.