Información

Fecha de entrega Sin fecha de envío
Tiempo límite de envío Sin límite de envío

Etiquetas

Inicia sesión

[9.4] Philiiiiiiiippe [Obligatoire]

Le terme "nanar" est employé par certains cinéphiles pour désigner des films particulièrement mauvais qu'on se pique de regarder ou d'aller voir pour les railler et/ou en tirer au second degré un plaisir plus ou moins coupable. Les nanars, ces "mauvais films sympathiques", se divisent en quatre catégories en fonction de leur cote (sur 10) sur le site Nanarland :

  • navet (0-3)
  • mauvais nanar (4-6)
  • oeuvre nanarde (7-8)
  • nanar culte (9-10)

Chaque nanar a un titre, une durée (en minutes), une note et l'identifiant du client qui le loue (qui vaut 0 s'il n'est pas loué).

« Je m'appelle Volkor, je suis envoyé par Koménor à bord du Cosmosaur et je ne reçois pas d'ordres de toi ! »
(San Ku Kaï)

On va aider le gérant d'un point de location de nanars. Il devra pouvoir encoder les nanars qu'il a et gérer l'emprunt de nanars.

Remplacez les TODO du programme ci-dessous pour permettre d'encoder tous les nanars présents dans la nanardothèque. Pour ce faire, le gérant doit d'abord indiquer le nombre total de nanars qu'il va encoder, puis, pour chacun des nanars, il indiquera son titre, sa durée (en minutes) et sa note (de 0 à 10). Notez que, lors de l'encodage, l'identifiant de client associé au nanar vaut automatiquement 0. Après chaque encodage, le programme affiche la catégorie dans laquelle se trouve le nanar avec les messages suivants :

  • navet"C'est un navet !"
  • mauvais nanar"C'est un mauvais nanar !"
  • oeuvre nanarde"C'est une oeuvre nanarde !"
  • nanar culte"C'est un nanar culte !"
- Paris restera toujours paris.
- Oui, et réciproquement !
(Lorna la Lionne du désert)

Après l'encodage, le gérant doit pouvoir gérer l'emprunt de nanar en indiquant l'identifiant du client qui souhaite emprunter un nanar et le titre du nanar. Si le nanar n'existe pas, le programme doit indiquer "Le nanar n'existe pas.". S'il n'est pas déjà loué, le programme doit l'indiquer comme loué et afficher "ok !". Sinon, le programme doit indiquer l'identifiant du client qui l'a loué, et proposer de louer, à la place, un des nanars libres dont la durée est la plus proche de celui que le client souhaitait louer. Il suffit alors au gérant d'indiquer si oui ('o') ou non ('n') le client est d'accord de louer ce nanar. S'il n'existe pas de nanar libre, le programme doit indiquer "Désolé, aucun nanar libre n'est disponible.". Le programme se termine lorsque l'identifiant entré pour un client est négatif.

« C’est le genre de type qui boirait un bidon d’essence pour pouvoir pisser sur ton feu de camp. Ce mec-là, tu le largues au pôle nord, sur la banquise avec un slip de bain pour tout vêtement, sans une brosse à dent et demain après-midi tu le vois débarquer au bord de ta piscine avec un sourire jusqu’aux oreilles et les poches bourrées de pesos. »
(Terrain Miné)
./9.4_philiiiiiiiippe/flying_saucers_over_hollywood.png

Exemple

Combien de Nanar voulez-vous encoder ? 3

Titre: Lorna la Lionne du désert
Durée: 86
Note: 6
C'est un mauvais nanar !

Titre: Crocodile Fury
Durée: 85
Note: 9
C'est un nanar culte !

Titre: Mega Piranha
Durée: 92
Note: 8
C'est une oeuvre nanarde !

Identifiant du client: 11
Titre du nanar à emprunter: Mega Piranha
ok !

Identifiant du client: 14
Titre du nanar à emprunter: Mega Piranha
Ce nanar est déjà loué par le client 11
Voulez-vous plutôt emprunter Lorna la Lionne du Désert ? (o/n): o
ok !

Identifiant du client: -1
Au revoir !

Évaluation

Votre code va être compilé puis testé avec plusieurs valeurs d'entrées différentes pour vérifier qu'il fonctionne bien.

Cependant, prenez déjà l'habitude de tester votre code vous-mêmes car il n'y aura pas INGInious pour le vérifier automatiquement dans l'exercice récapitulatif.

Veuillez aussi suivre les bonnes pratiques suivantes car INGInious ne sait pas les vérifier automatiquement mais elles seront vérifiées dans l'exercice récapitulatif :

  • Les noms des variables, constantes, paramètres, fonctions, structures et types créés sont-ils pertinents ? Correspondent-ils vraiment à ce qu'ils doivent contenir ?
  • Est-ce que le code est correctement factorisé ? Est-ce qu'il est possible de déplacer du code en dehors des sélections ou de créer des fonctions pour avoir moins de code dupliqué ?
  • Est-ce que les sélections et conditions sont correctement organisées ? Est-ce qu'il est possible de changer l'ordre des sélections ou des conditions pour diminuer leur nombre ?
  • Est-ce que toutes les fonctions sont bien spécifiées avec des préconditions et postconditions claires ?

Le code
Informations supplémentaires

Vous pouvez considérer qu'aucun titre ne fera plus de 50 caractères et que les entrées seront toujours valides et conformes aux attentes du programme.

Utilisez la fonction scanf(" %50[^\n]", ptr) pour lire des chaînes de caractères avec des espaces et de 50 caractères maximum.