Programmation

Principes et pratique avec C++

ERRATA

De façon générale, toutes les corrections à l'œuvre originale données par l'auteur avant septembre 2010 ont été intégrées à l'édition française. On ne trouve donc ici que les corrections plus récentes et leurs dates sont indiquées. La notation (F) indique les corrections exclusives à la version française. La plupart des corrections sont des améliorations : il n'est donc pas nécessaire d'appliquer systématiquement les corrections à votre copie du livre, cette liste vous permettra plutôt de vérifier votre compréhension en cas de doute. (dernière mise à jour 2012-12-27)

La notation s/texte/correction/ indique qu'il faut remplacer le « texte » par la « correction » indiquée.

Page II (F) [2010-10-04]
s/Addisson/Addison/ quatre fois
Page 60 (F) [2012-12-27]
s/1 mile = 1 609 kilomètres/1 mile = 1,609 kilomètres/
Page 107 [2010-10-30]
s/et type d'argument)/et types des arguments)/
Page 109 [2010-10-30]
s/Cela suffit/Cette approche est suffisante/
Page 255 [2010-10-28]
À la fin de l'entraînement 1, ajouter « Indice : #include <iostream> est nécessaire pour cin. »
Page 287 [2010-10-30]
s/Date& default_date()/const Date& default_date()/
Page 288 (F) [2012-08-20]
s/switch (unit)/switch (m)/
Page 371 [2011-07-13]
s/1450x1050/1400x1050/
Page 395 [2011-07-13]
s/Window.ccp/Window.cpp/
Page 419 [2010-11-05]
Remplacer la définition de set_radius par 
    void set_radius(int rr)
    {
        set_point(0,Point(center().x-rr,center().y-rr)); // conserver le centre
        r = rr;
    }
Page 421 [2010-11-05]
Remplacer les définitions de set_minor et set_major par 
    void set_major(int ww)
    {
        set_point(0,Point(center().x-ww,center().y-h)); // conserver le centre
        w = ww;
    }

    void set_minor(int hh)
    {
        set_point(0,Point(center().x-w,center().y-hh)); // conserver le centre
        h = hh;
    }
Page 446 [2010-09-13]
s/line_color/lcolor/
Page 447 [2010-09-13]
s/restorer la couleur et la forme/restorer la couleur et le style/
Page 450 [2011-07-13]
s/const Open_polyline&/Open_polyline&/
Page 450 (dans la figure) [2010-09-15]
s/line_color/lcolor/ deux fois et ajouter fcolor
Page 453 (dans chacune des deux figures) [2010-09-15]
s/line_color/lcolor/ deux fois et ajouter fcolor
Page 473 [2010-11-05]
s/20,20/30,30/ deux fois
Page 481 [2010-10-04]
Remplacer le dernier paragraphe (qui se termine à la page 482) par :
Rappelez-vous, les calculs en virgule flottante ne sont pas corrects d'un point de vue mathématique. Les nombres en virgule flottante représentent une approximation des nombres réels aussi proche que le permet le nombre de bits fixe alloué pour leur stockage. Un int déborde si on y place un entier trop grand, tandis qu'un double conserve une approximation. Lorsque j'ai vu le curieux résultat obtenu pour les grands nombres de termes, j'ai d'abord cru que notre calcul produisait des valeurs qui ne pouvaient être représentées par des double et qui auraient fait diverger notre résultat de la réponse mathématique correcte. Ensuite, j'ai plutôt réalisé que fac() produisait des valeurs qui ne pouvaient être conservées dans un int. En modifiant fac() pour qu'elle produise un double, le problème serait résolu. Pour plus d'informations, voir l'exercice 11 du chapitre 5 ou la section 24.2.
Page 634 [2010-12-28]
s/elem(a.allocate(n))/elem(alloc.allocate(n))/
Page 635 [2010-10-22]
Remplacer
    for (int i=0; i<sz; ++i)
         this->alloc.construct(&b.elem[i],this->elem[i]);    // copie
par
    uninitialized_copy(b.elem,&b.elem[this->sz],this->elem); // copie
Page 635 (F) [2010-10-22]
Remplacer
    for (int i=0; i<sz; ++i)
         this->alloc.destroy(this->elem[i]);    // destruction de l'ancien
par (seule la première ligne est différente)
    for (int i=0; i<this->sz; ++i)
         this->alloc.destroy(this->elem[i]);    // destruction de l'ancien
Page 657 [2010-11-15]
s/iterator(Link* p)/iterator(Link<Elem>* p)/
Page 666 [2010-10-19]
s/++first;/first = ++p;/
Page 668 [2011-07-13]
s/delete()/erase()/
Page 673 [2010-10-04]
s/enregistrer l'indice de l'élément à effacer/enregistrer l'indice de l'élément à insérer/
Page 674 [2010-11-05]
s/typedef T* const_iterator/typedef const T* const_iterator/
Page 781 [2010-11-05]
s/sender.equal_range("John Doe");/sender.equal_range("John Doe <jdoe@machine.example>");/
Page 782 (F) [2010-11-05]
s/<jdoe@machine./<jdoe@machine"/
Page 782 (F) [2010-11-05]
s/example>");/".example>");/

NOTE : Les corrections aux chapitres non traduits sont disponibles sur le site de l'auteur.