12–1

Définissez un type nommé "telephone" (avec "typedef") permettant de regrouper les trois parties d'un numéro de téléphone américain: l'indicatif régional (3 chiffres), le préfixe (3 chiffres) et le numéro lui-même (4 chiffres).

12–2

Considérez les déclarations suivante (nous supposons ici que le type décrit au no 1 a été défini).

         telephone No;
         telephone Bottin[1000];

Écrivez un bout de code permettant d'afficher à l'écran la variable No et la variable Bottin.

12–3

Définissez un type nommé "point" (avec "typedef") permettant de regrouper la coordonnée X et Y réels d'un point dans l'espace.

12–4

Écrivez une fonction nommée "distance" recevant deux "points" tels que déclarés au no précédent et retournant la distance entre ces deux points.

12–5 Définissez un type nommé "fraction" (avec "typedef") permettant de regrouper le numérateur et le dénominateur entiers d'une fraction.
12–6

Écrivez le code des fonctions suivantes (en considérant la définition du No précédent).

// Multiplication de deux fractions
void multiplication(fraction f1, fraction f2, fraction * ptrf3);
// Addition de deux fractions
void addition(fraction f1, fraction f2, fraction * ptrf3);

12–7

Voici une définition de type permettant de représenter une "piece musicale" sur un disque.

typedef struct{
char titre[100];
unsigned long duree;
} piece;

Utilisez "typedef" pour définir le type "disque" permettant de regrouper dans un struct: la liste des pièces musicales sur le disque, le titre du disque, l'auteur, l'année de parution et le nombre de pièces sur le disque. NOTE: La liste des pièces musicales peut être représentée par un tableau statique.

12–8

Considérez les définitions de type du No 12.7 et la déclaration suivante:

disque salsa;

Écrivez une fonction dont le prototype est:

unsigned long dureeTotale(disque CD);

permettant calculer et de retourner la durée totale en minutes du disque fourni en argument. Montrez comment appeler cette fonction en utilisant les déclarations fournies.

12–9

Toujours en considérant les définitions du No 12.7, déclarez une variable permettant de stocker une banque de 1000 "disques" dans un tableau dynamique. Écrivez l'instruction permettant de créer le tableau.

12–10

Considérez les définitions de types et les déclarations de variables suivantes:

typedef struct{
unsigned codeRegional;
unsigned prefixe;
unsigned numero;
} telephone;

typedef struct{
unsigned nbechecs;
double moyenne;
unsigned nbcredits;
} infoEvolution;

typedef struct{
char sigles[30][6];
unsigned nbCours;
} infoCours;

typedef struct{
char nom[80];
char prenom[80];
char adresse[255];
char codeperm[10];
telephone tel;
} infoIdentite;

typedef struct{
infoCours cours;
infoEvolution evol;
infoIdentite ident;
} infoEtudiant;

int main(void){
infoEtudiant * liste;
unsigned nbEtudiants;

printf("Combien d'étudiants? ");
scanf("%u", &nbEtudiants); liste = (infoEtudiant *) malloc(nbEtudiants * sizeof(intoEtudiant);

...

Ecrivez un bout de code permettant d'initialiser, pour chaque étudiant de la liste, son numéro de téléphone à 0-0-0, sa moyenne à 0
, son nbechecs à 0, son nbcredits à 0, son nbcours à 0.
12–11

En examinant les définitions et les déclarations du numéro précédent et celles-ci:

infoEtudiant vous;
infoCours horaire;

indiquez rapidement quel est le type de chacune des expressions suivantes:

liste
liste->cours
liste->cours.nbCours
&liste
&liste->evol
&vous
vous.evol.moyenne
horaire.sigle[4][2]
&horaire.nbCours
&horaire
12–12

La couleur d'un pixel peut être représenté par trois entiers représentant le degré de rouge de vert et de bleu (code RGB - red-green-blue). Voici un type permettant de représenter la couleur d'un pixel. Le type "char" a été choisi parce que l'entier qu'il contient est représenté sur 1 octet.

typedef struct{
char rouge;
char vert;
char bleu;
} RGB;

Déclarez un tableau 2D dynamique permettant de représenter une image. Écrivez le bout de code permettant de créer ce tableau en supposant que les variables entières "largeur" et "hauteur" contiennent déjà la largeur et la hauteur de l'image. Profitez-en pour prévoir l'instruction permettant d'initialiser chaqe pixel à la couleur noire (0-0-0).

12–13

Voici maintenant la définition d'une image en terme de structure.

typedef struct{
RGB * * contenu;
unsigned largeur;
unsigned hauteur;
} image;
Écrivez une fonction qui, recevant une image en paramètre, retourne le nombre de pixels noirs dans cette image.
12–14

En tenant compte des définitions des numéros 12.12 et 12.13, déclarez un variable permettant de stocker dynamiquement des images. Montrez le code nécessaire pour créer ce tableau si l'on désire 500 images.

Modifié le: lundi, 16 juin 2014, 16:24