Programmation C
struct, typedef & enum - Exercices
|
|

|
|

|
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
|