Académique Documents
Professionnel Documents
Culture Documents
TP1 (suite)
A- Namespace
Les noms des éléments de la bibliothèque iostream en rapport avec les entrées sortie sont
toujours précédées de std::
Pour ne pas avoir à répéter à chaque fois ce préfixe on peut demander au compilateur de
l’ajouter automatiquement grâce à l’instruction : using namespace std ;
Exemple d’usage :
#include<iostream>
using namespace std;
int main()
{
/**
std::cout << "Hello, World !"<< std::endl ;
s'ecrit
*/
cout << "Hello, World !"<< endl ;
return (0);
}
2- La classe iomanip
Inclure la classe iomanip
Elle contient les manipulateurs dec, hex, oct, setbase( ), showbase( )
Ils permettent de contrôler certains aspects de l’affichage.
b) Setbase( )
setbase(10) produit le même effet que dec.
setbase(16) produit le même effet que hex.
setbase(8) produit le même effet que oct.
c) Showbase
Ce manipulateur permet d’afficher les nombres avec sa convention de représentation :
un nombre hexadécimal est précédé de 0x.
un nombre octal est précédé de 0.
un nombre décimal commence par un chiffre différent de 0.
Exemple
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
// le nombre 57 (base 10) = 71(base 8) = 39(base 16) [calculatrice]
cout << "defaut base 10 :" << 57 << endl; // decimal par defaut
cout << "en base 10 :" << dec << 57 << endl; // decimal, specifié
cout << "en base 8 :" << oct << 57 << endl; // octal
cout << "en base 16 :" << hex << 57 << endl; // hexadecimal
cout << "defaut base 16 :" << 57 << endl; // hexadecimal devenu defaut
d) Setw( ) et setfill
setw est un manipulateur qui permet de contrôler la largeur de l’affichage.
Ainsi dans la ligne suivante l’affichage sera fait sur 10 places de caractères.
cout << setw(10) << 735 << endl;
On obtient le résultat suivant :
setfill est un manipulateur qui va permettre de remplir les espaces blancs avec un caractere
choisi. Si on écrit :
cout << setw(10) << setfill(‘*’) << 735;
on obtient :
e) Left et right
Les deux manipulateurs permettent la justification gauche et droite respectivement. Par défaut
la justification est droite.
Voici un exemple d’usage.
cout << left << setw(15) << setfill('*') << 3.151592;
Exemple complet
/*
setw()
setfill()
left
right
*/
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << "12345678901234567890 compteur de caracteres" << endl;
///affichage par defaut
cout << 735 << endl;
///setw : affihage avec largeur egale a 10 places
cout << setw(10) << 735 << endl;
///setfill : affichage avec remplissage avec caractere *
cout << setfill('*') << setw(10) << 735 << endl;
cout << setw(10) << setfill('*') << 735 << endl; ///ordre indifferent
///left et right
cout << left << setw(15) << setfill('*') << 3.151592 << endl;
cout << right << setw(15) << 3.151592 << endl;///correspond au defaut
return (0);
}
f) Setprecision
Elle permet de préciser le nombre de chiffres dans l’affichage, virgule non comprise. C’est en
fait le nombre maximal de chiffres dans la mantisse du nombre. Elle prend comme argument
un nombre entier n, comme dans cette écriture : setprecision(n)
Exemple
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout << "123456789012345678901234567890 Compteur" << endl;
long double pi = 3.1415926535897932384626433832795; //copie de Window calculator
cout << pi << " Defaut precision (6): " << endl;
// affiche 6 chiffres(mantisse) 3.14159
///action de setprecision
cout << setprecision(10) << pi << endl;
// 3.141592654 et arrondi sur le dernier
return (0);
}
g) scientific
Ce manipulateur permet de passer en notation scientifique. Par exemple 0.001234 s’écrirait
1.234e-03
cout << scientific << 0.001234 << endl;
affiche : 1.234000e-003
h) Fixed
Ce manipulateur permet de passer en notation de virgule flottante (floating-point). Par
exemple 1.234e-03 s’erirait 0.001234
cout << fixed << 0.001234e-3 << endl;
affiche : 0.001234
Exercice:
On veut vérifier qu’il y a débordement sur le type int quand on fait des opérations avec des
valeurs au-delà des limites permises.
1) Inclure la bibliothèque limits.
2) Afficher les limites permises pour le type int. On peut extraire ces valeurs grâce
aux grandeurs : numeric_limits<int>::max( ) et numeric_limits<int>::min( )
3) Déclarer une variable A de type int et lui assigner la valeur maximale permise par ce
type. Afficher A+ 1, et Conclure.
5) Assigner à A la valeur minimale permise par le type int . Afficher A-1, et conclure.