Fonctions utiles (Mathématiques et caractères) en C++

18 Nov 2021 18 Nov 2021 4249 vues ESSADDOUKI Mostafa 6 min de lecture
Introduction et syntaxe de base
1 Introduction au langage C++ 2 Entrée-sortie en C++ - cin et cout 3 Inférence de type avec le mot-clé auto en C++ 4 Classe std::string et les chaînes de caractères en C++ 5 Les structures conditionnelles (if et switch) en C++ (C++17 et C++20) 6 Les boucles en C++ (C++17 et C++20) 7 La gestion des fichiers en C++
Pointeurs et fonctions
8 Introduction aux pointeurs en C++ - Déclaration et interêts 9 Les références en C++ - déclaration et interêts 10 Les tableaux en C++ - Déclaration et interêts 11 Introduction aux fonctions en C++ 12 Passer des arguments à une fonction en C++ 13 Déclarer un paramètre const en C++ 14 Les fonctions Lambda en C++ 15 Fonctions utiles (Mathématiques et caractères) en C++
Programmation OO
16 Classes et objets en C++ 17 Spécificateurs d'accès en C++ 18 Constructeurs et destructeur d'une classe en C++ 19 Fonctions membres en C++ 20 Membres statiques d'une classe en C++ 21 Fonctions en ligne en C++ - inline 22 Fonctions et classes amies en C++ - friend 23 Surcharge des fonctions en C++ 24 Surcharge des opérateurs en C++ 25 Héritage en C++ 26 La gestion d'exceptions en C++ : déclaration, utilisation et personnalisation 27 fonctions et classes templates en C++ 28 Les nouveautés C++20 pour améliorer les templates en C++
Structures de données
29 Introduction aux structures de données 30 Les structures en C++ et la différence avec les structures en C 31 Les listes chaînées en C++ 32 Les piles en C++ 33 File d'attente en C++ 34 Arbre binaire de recherche : définition et mise en oeuvre en C++
La bibliothèque standard (STL)
35 Introduction à la bibliothèque de Template Standard STL 36 Les itérateurs en C++ - définition, déclaration et exemples 37 La classe array en C++ (bibliothèque STL) <array> 38 La classe vector de la bibliothèque STL <vector> 39 La classe deque en C++ ( Bibliothèque STL) 40 La classe list en C++ (bibliothèque STL) <list> 41 La classe stack (Pile) en C++ (bibliothèque STL) <stack> 42 La classe queue (File d'attente) en C++ (bibliothèque STL) <queue> 43 La file d'attente prioritaire (classe priority_queue) - Bibliothèque STL 44 Les ensembles en C++ (Classe set <set> - Bibliothèque STL) 45 Les dictionnaires en C++ : Classe map (Bibliothèque STL) 46 Introduction aux algorithmes de la bibliothèque STL (programmation compétitive) 47 Tri et méthodes associées en C++ - Bibliothèque STL 48 Recherche dichotomique et méthodes associées en C++ - Bibliothèque STL 49 Appliquer un prédicat ou une fonction aux éléments d'une séquence en C++ - Bibliothèque STL 50 Recherche dans une séquence et méthodes associées en C++ - Bibliothèque STL

Fonctions de la bibliothèque standard C++

Lorsqu'une fonction est prédéfinie dans une bibliothèque, il suffit d'inclure le fichier d'en-tête correspondant — inutile de la redéfinir. Il faut cependant connaître sa déclaration pour pouvoir l'appeler correctement.

Fonctions mathématiques

Le C++ fournit un ensemble de fonctions mathématiques regroupées sous l'en-tête <cmath>, hérité (avec quelques modifications) du langage C — d'où le préfixe « c » dans son nom.

En-tête requis Inclure #include <cmath> pour utiliser les fonctions mathématiques.

Fonctions numériques

Ces fonctions prennent une ou plusieurs valeurs numériques en paramètre et retournent une valeur numérique. Le type désigné par type peut être float, double ou long double. Toutes ces fonctions sont surchargées : elles acceptent différents types d'arguments et peuvent retourner un type différent.

DéclarationDescription
type abs(type x)Valeur absolue de x
type ceil(type x)Plus petit entier supérieur ou égal à x (arrondi vers le haut)
type floor(type x)Plus grand entier inférieur ou égal à x (arrondi vers le bas)
type log(type x)Logarithme naturel (base e) de x
type log10(type x)Logarithme commun (base 10) de x
type exp(type x)Exponentielle ex
type pow(type x, type y)x élevé à la puissance y (y peut aussi être de type int)
type sqrt(type x)Racine carrée de x

  Exemple 1 — Utilisation des fonctions numériques

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    cout << "abs(8)        = " << abs(8)        << endl;
    cout << "abs(-8)       = " << abs(-8)       << endl;
    cout << "floor(12.78)  = " << floor(12.78)  << endl;
    cout << "ceil(12.78)   = " << ceil(12.78)   << endl;
    cout << "log(100)      = " << log(100)      << endl;
    cout << "log10(100)    = " << log10(100)    << endl;
    cout << "exp(5)        = " << exp(5)        << endl;
    cout << "pow(2, 3)     = " << pow(2, 3)     << endl;
    cout << "sqrt(100)     = " << sqrt(100);
    return 0;
}
Sortie
abs(8)        = 8
abs(-8)       = 8
floor(12.78)  = 12
ceil(12.78)   = 13
log(100)      = 4.60517
log10(100)    = 2
exp(5)        = 148.413
pow(2, 3)     = 8
sqrt(100)     = 10

Fonctions trigonométriques

Ces fonctions sont également surchargées. Le type type représente l'un des types à virgule flottante (float, double, long double). Les angles sont exprimés en radians.

DéclarationParamètreValeur retournéeDescription
type cos(type x)radians[−1, +1]Cosinus de x
type sin(type x)radians[−1, +1]Sinus de x
type tan(type x)radiansTout réelTangente de x
type acos(type x)[−1, +1][0, π]Arc cosinus de x
type asin(type x)[−1, +1][0, π]Arc sinus de x
type atan(type x)Tout réel[−π/2, +π/2]Arc tangente de x

  Exemple 2 — Fonctions trigonométriques pour 45°

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    const double PI = 3.141592653589793238462;
    double degree = PI / 4;  // 45 degrés en radians

    cout << "sin(45°) : " << sin(degree) << endl;
    cout << "cos(45°) : " << cos(degree) << endl;
    cout << "tan(45°) : " << tan(degree);

    return 0;
}
Sortie
sin(45°) : 0.707107
cos(45°) : 0.707107
tan(45°) : 1
Conversion degrés → radians Les fonctions trigonométriques de <cmath> attendent des angles en radians. Pour convertir un angle d en degrés : radians = d * PI / 180.0

Fonctions de caractères

En C++, plusieurs fonctions de bibliothèque permettent de manipuler et classifier les caractères. Elles sont toutes regroupées dans l'en-tête <cctype>.

En-tête requis Inclure #include <cctype> pour utiliser les fonctions de caractères.

Fonctions de classification

Les noms de ces fonctions commencent tous par le préfixe is (ex. : isdigit, isupper…). Elles retournent 1 (vrai) si le caractère passé appartient à la catégorie testée, 0 (faux) sinon. Le paramètre est de type int mais on passe un caractère en pratique.

FonctionDescription
int isalnum(int x)Le caractère est-il alphanumérique ?
int isalpha(int x)Le caractère est-il alphabétique ?
int iscntrl(int x)Le caractère est-il un caractère de contrôle ?
int isdigit(int x)Le caractère est-il un chiffre décimal (0 à 9) ?
int isgraph(int x)Le caractère est-il imprimable (hors espace) ?
int islower(int x)Le caractère est-il une lettre minuscule (a à z) ?
int isprint(int x)Le caractère est-il imprimable (espace inclus) ?
int ispunct(int x)Le caractère est-il un signe de ponctuation ?
int isspace(int x)Le caractère est-il un espace, retour à la ligne ou tabulation ?
int isupper(int x)Le caractère est-il une lettre majuscule (A à Z) ?
int isxdigit(int x)Le caractère est-il hexadécimal (0-9, a-f ou A-F) ?

Fonctions de conversion

Deux fonctions permettent de convertir la casse d'un caractère. Elles commencent par le préfixe to et retournent un entier correspondant à la valeur du caractère converti.

FonctionDescription
int tolower(int x)Retourne l'équivalent minuscule du caractère passé en paramètre
int toupper(int x)Retourne l'équivalent majuscule du caractère passé en paramètre

  Exemple 3 — Classification et conversion de caractères

#include <iostream>
#include <cctype>
using namespace std;

int main() {
    char ch;
    int cpt = 0;

    while (cin >> noskipws >> ch) {
        if (isalpha(ch)) { cpt++; }
        ch = toupper(ch);
        cout << ch;
    }

    cout << "Le nombre de caractères alphabétiques est : " << cpt;
    return 0;
}
Sortie
Hi mostafa123 how are you today ?
HI MOSTAFA123 HOW ARE YOU TODAY ?
^Z
Le nombre de caractères alphabétiques est : 23
Note sur noskipws Le manipulateur noskipws désactive l'ignorance automatique des espaces lors de la lecture avec cin, ce qui permet de lire tous les caractères y compris les espaces et les tabulations.

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.