Programmation C
struct, typedef & enum - Exercices
Cours Exercices Correction des exercices

Exercice 1 Exercice 2 Exercice 3 Exercice 4
Exercice 5 Exercice 6 Exercice 7 Exercice 8

Exercice 1

  • Développer une struct permettant le stockage d'un personnage de jeu caractérisé par
    • un nom : chaîne de caractères d'au maximum 64 caractères
    • une force au combat : entier compris dans l'intervalle [10,100]
    • un niveau de vie : entier compris dans l'intervalle [50,100]
    • une capacité à utiliser la magie : entier compris dans l'intervalle [1,5]
  • Développer un programme principal réalisant les traitements suivants
    • Définition d'une variable de type personnage
    • Affichage du nombre d'octets occupés en mémoire par le type struct et par cette variable

Exercice 2

  • Développer les struct nécessaires au stockage d'une position GPS composée
    • d'une longitude comptée en degrés, minutes et secondes (valeurs entières)
    • d'une latitude comptée en degrés, minutes et secondes (valeurs entières)
  • Développer une fonction permettant de calculer la distance orthodromique existant entre deux positions GPS
  • Développer un programme principal réalisant les traitements suivants
    • Définition d'une première variable de type position GPS initialisée à 47° 14' 16" de latitude nord et 6° 1' 27" de longitude est
    • Définition d'une seconde variable de type position GPS initialisée à 17° 32' 6" de latitude sud et 149° 34' 11" de longitude ouest
    • Calcul et affichage de la distance orthodromique existant entre les deux positions GPS

Exercice 3

  • Développer la (ou les) struct nécessaire au stockage d'une collection de n valeurs entières
  • Développer une fonction permettant de créer une collection vide
  • Développer une fonction permettant de créer une collection de n valeurs entières initialisées par tirage au sort dans l'intervalle [1,max]
  • Développer une fonction permettant de vider une collection
  • Développer une fonction permettant de tester si une collection est vide
  • Développer une fonction permettant de tester si une collection d'entiers contient un entier donné
  • Question supplémentaire
    • Développer une fonction permettant de tester si une collection d'entiers est un ensemble d'entiers c'est à dire que toute valeur incluse dans la collection n'y apparait qu'une fois
  • Développer une fonction permettant de modifier un ensemble d'entiers par ajout d'un entier (si cet entier n'est pas déjà inclus)
  • Développer une fonction permettant de modifier un ensemble d'entiers par retrait d'un entier (si cet entier existe)
  • Questions supplémentaires
    • Développer une fonction permettant de créer l'ensemble d'entiers obtenu par copie d'un ensemble d'entiers
    • Développer une fonction permettant de créer l'ensemble d'entiers obtenu par soustraction d'un ensemble d'entiers e2 à un ensemble d'entiers e1 (calcul de e = e1 - e2)
    • Développer une fonction permettant de créer l'ensemble d'entiers obtenu par union de deux ensembles d'entiers (calcul de e = e1 ∩ e2)
    • Développer une fonction permettant de créer l'ensemble d'entiers obtenu par intersection entre deux ensembles d'entiers (calcul de e = e1 ∪ e2)
  • Développer un programme principal de test des fonctions

Exercice 4

  • Développer les struct permettant le stockage d'un cube 3D caractérisé par la valeur de son côté et la position (x,y,z) de son centre (toutes coordonnées réelles)
  • Développer une fonction permettant de créer un tableau de n cubes par allocation dynamique
  • Développer une fonction permettant de traiter un tableau de cubes de façon à
    • donner une position au centre de chacun d'eux en la tirant au sort en x, en y et en z dans l'intervalle [-50.0,50.0]
    • donner une valeur de côté aléatoire dans l'intervalle [5.0,15.0] à chacun d'eux
  • Développer une fonction permettant d'afficher l'indice de tous les cubes d'un tableau de cubes qui contiennent une position (x,y,z) donnée
  • Développer un programme principal de test des fonctions

Exercice 5

  • But de l'exercice : développer la structure et les fonctions de base permettant de gérer une pile de valeurs de type long long en utilisant une gestion dynamique de la mémoire de façon à ce que la taille de la pile soit ajustée automatiquement aux valeurs qu'elle contient
  • En utilisant une gestion de mémoire à base de tableaux de long long, développer la (ou les) struct utilisée pour la gestion de la pile
  • En utilisant une liste simplement chaînée, développer la (ou les) struct utilisée pour la gestion de la pile
  • Développer une fonction permettant de créer une pile vide
  • Développer une fonction permettant de tester si une pile est vide
  • Développer une fonction permettant d'empiler une valeur de type long long sur une pile
  • Développer une fonction permettant de dépiler la valeur de type long long située en haut d'une pile, s'il y en a une
  • Développer une fonction permettant de vider une pile

Exercice 6

  • En utilisant typedef, définir un type coefficient destiné à contenir une valeur float incluse dans l'intervalle [0.0,1.0]
  • En utilsant typedef, définir un type couleur destiné à contenir une couleur RVB constituée d'un coefficient de rouge, d'un coefficient de vert et d'un coefficient de bleu
  • Développer une fonction d'affichage des coefficients d'une couleur au format [r.rrr,v.vvv,b.bbb]
  • Développer un programme principal réalisant les traitements suivants
    • Déclaration de 8 couleurs sous la forme de 8 constantes globales
      • Noir
      • Rouge
      • Vert
      • Bleu
      • Jaune
      • Cyan
      • Magenta
      • Blanc
    • Affichage des valeurs numériques correspondant au cyan et au jaune

Exercice 7

  • Déclarer une énumération pour trois constantes numériques entières permettant de coder les erreurs
  • Invalid operation : valeur 10
  • Invalid value : valeur 11
  • Stack overflow : valeur 12
  • Stack underflow : valeur 13
  • Out of memory : valeur 14
  • No error : valeur 0
  • Développer un programme principal de test

Exercice 8

  • Buts de l'exercice
    • Pouvoir représenter les six autorisations élémentaires attribuables à un fichier sous Windows : lire, écrire, exécuter, détruire, changer les permissions et changer le propriétaire du fichier en accord ou refus
    • Rendre possible la composition de ces six autorisations au moyen d'un code numérique entier
  • En utilisant typedef et enum, déclarer les autorisations élémentaires
  • En utilisant typedef, déclarer un type compositionAutorisations
  • Développer une fonction permettant de calculer une composition de six autorisations élémentaires accordées ou refusées
  • Développer une fonction permettant de tester si une composition d'autorisation accorde le droit de changer une permission
  • Déveloper un programme principal de test