12–1
typedef struct{
int codeRegional;
int prefixe;
int numero;
} telephone;
12–2
// La notation %04i permet d'afficher le nombre sur 4 positions en 
// remplissant les positions libre avec des zéros.
printf("(%03i) %03i-%04i \n", No.codeRegional, No.prefixe, No.numero);
for (i = 0; i < 1000; i++) printf("(%03i) %03i-%04i \n", Bottin[i].codeRegional,
Bottin[i].prefixe,
Bottin[i].numero);
12–3
typedef struct{
double X;
double Y;
} point;
12–4
double distance(point P1, point P2) {
double a, b; a = P2.X - P1.X;
b = P2.Y - P1.Y;
return sqrt(a * a + b * b);
}
12–5
typedef struct {
int nume;
int deno;
} fraction;
12–6
// Multiplication de deux fractions: sans simplification...
void multiplication(fraction f1, fraction f2, fraction * ptrf3){
ptrf3->nume = f1.nume * f2.nume;
ptrf3->deno = f1.deno * f2.deno; } // Addition de deux fractions : sans simplification ni recherche du PGCD void addition(fraction f1, fraction f2, fraction * ptrf3){
ptrf3->deno = f1.deno * f2.deno;
ptrf3->nume = f1.nume * f2.deno + f2.nume * f1.deno;
}
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;
typedef struct{
char titre[100];
char auteur[35];
piece liste[50]; // jusqu'à 50 pièces musicales...
int nbPieces;
int annee;
} disque;
12–8
unsigned long dureeTotale(disque          CD){ int i;
   unsigned long total;
   total = 0;
   for (i = 0; i < CD.nbPieces; i++)
      total += CD.liste[i].duree;
         
   return total;
}

Exemple d'appel:

dureeTotale(salsa);
12–9

Déclaration:

disque * discotheque;

Instruction pour la création:

discotheque = (disque *)malloc(1000 * sizeof(disque));
12–10
 for (i = 0; i < nbEtudiants; i++) {
     liste[i].ident.tel.codeRegional = 0;
     liste[i].ident.tel.prefixe = 0;
     liste[i].ident.tel.numero = 0;
     liste[i].cours.nbCours = 0;
     liste[i].evol.nbechecs = 0;
     liste[i].evol.nbcredits = 0;
     liste[i].evol.moyenne = 0.0;
}
12–11
         infoEtudiant * liste;
         infoEtudiant vous;
         infoCours horaire;
Expression Type
liste
infoEtudiant *
liste->cours
infoCours
liste->cours.nbCours
unsigned
&liste
infoEtudiant * *
&liste->evol s'évalue comme: &(liste->evol)
infoEvolution *
&vous
infoEtudiant *
vous.evol.moyenne
double
horaire.sigle[4][2]
char
&horaire.nbCours s'évalue comme: &(horaire.nbCours)
unsigned *
&horaire
infoCours *
12–12

Déclarez un tableau 2D dynamique permettant de représenter une image.

RGB * * Im;

É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).

Im = (RGB **)malloc(largeur * sizeof(RGB *));
for (i = 0; i < largeur; i++)
Im[i] = (RGB *)malloc(hauteur * sizeof(RGB)); for(i= 0; i< largeur; i++)
for (k = 0; k < hauteur; k++) {
Im[i][k].rouge = 0;
Im[i][k].vert = 0;
Im[i][k].bleu = 0;
}
12–13
unsigned long nbPixelsNoirs(image Im) {
   unsigned long n = 0;
   unsigned i, k;
   for (i = 0; i < Im.largeur; i++)
      for (k = 0; k < Im.hauteur; k++)
         if (Im.contenu[i][k].rouge == 0 &&
Im.contenu[i][k].vert == 0 &&
Im.contenu[i][k].bleu == 0)
n++; return n; }
12–14
image * listeImages;
listeImages = (image *)malloc(500 * sizeof(image));

Évidemment, chacune des 500 images devrait être créée dynamiquement...

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