Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 4

#include <iostream>

#include <cstdlib> // Pour utiliser atoi

#include <vector>

#include <sstream>

using namespace std;

class CarteBancaire {

private:

int numero[16]; // Numéro de 16 chiffres

string titulaire; // Nom du titulaire

int cryptogramme; // Cryptogramme (nombre de caractères du titulaire) x (résultat de l'étape 4) x


(les 4 premiers chiffres de la carte) modulo 1000

static int sommePairs;

static int sommeImpairs;

public:

CarteBancaire(const int num[], const string& titulaire);

~CarteBancaire();

bool validerNumero() const;

void calculerCryptogramme();

friend ostream& operator<<(ostream& os, const CarteBancaire& carte);

};

int CarteBancaire::sommePairs = 0;

int CarteBancaire::sommeImpairs = 0;

// Constructeur

CarteBancaire::CarteBancaire(const int num[], const string& titulaire)


: titulaire(titulaire), cryptogramme(0) {

for (int i = 0; i < 16; ++i) {

numero[i] = num[i];

CarteBancaire::~CarteBancaire() {

bool CarteBancaire::validerNumero() const {

for (int i = 0; i < 16; ++i) {

int chiffre = numero[i];

if (i % 2 == 0) {

chiffre *= 2;

if (chiffre > 9) {

chiffre -= 9;

sommePairs += chiffre;

} else {

sommeImpairs += chiffre;

int sommeTotale = sommePairs + sommeImpairs;

return (sommeTotale % 10 == 0);

void CarteBancaire::calculerCryptogramme() {
int tailleTitulaire = titulaire.length();

int quatrePremiersChiffres = 0;

for (int i = 12; i < 16; ++i) {

quatrePremiersChiffres = quatrePremiersChiffres * 10 + numero[i];

cryptogramme =( (tailleTitulaire * (sommePairs + sommeImpairs) * quatrePremiersChiffres) %


1000);

ostream& operator<<(ostream& os, const CarteBancaire& carte) {

os << "Numero de carte : ";

for (int i = 0; i < 16; ++i) {

os << carte.numero[i];

os << endl;

os << "Titulaire : " << carte.titulaire << endl;

os << "Cryptogramme : " << carte.cryptogramme << endl;

return os;

int main() {

int numeroCarte[16];

char numerodecarte [17]="4624748233249780";

string nom="younes chiboub";


for (int i=0;i<16;i++){

numeroCarte[i]= numerodecarte [i] - '0';

CarteBancaire maCarte(numeroCarte, nom);

if (maCarte.validerNumero()) {

cout << "La carte est valide." << endl;

} else {

cout << "La carte est invalide." << endl;

maCarte.calculerCryptogramme();

cout << maCarte << endl;

return 0;

Vous aimerez peut-être aussi