Exercices C++
Exercices C++
[Link]();
Écrire un programme qui affiche ceci à l'écran :
return EXIT_SUCCESS;
}
Hello world!
Voici un programme illustrant
l'utilisation de cout ! EXERCICE 3
Solution Écrire un programme qui demande à
l'utilisateur de taper 5 entiers et qui affiche leur
Cet exercice a pour but de vérifier les points moyenne. Le programme ne devra utiliser que
techniques suivants :
2 variables.
return EXIT_SUCCESS;
}
EXERCICE 5
Écrire un programme qui demande à
l'utilisateur de taper le prix HT d'un kilo de
tomates, le nombre de kilos de tomates
achetés, le taux de TVA (Exemple
10%,20%,...). Le programme affiche alors le
prix TTC des marchandises.
Solution
Cet exercice a pour but de vérifier les points
techniques suivants :
#include<iostream> #include<iostream>
using namespace std; using namespace std;
int main()
{ EXERCICE 7
Écrire un programme qui demande à
int i,ppt,x; l'utilisateur de taper un entier N et qui
calcule u(N) défini par :
for(i=0;i<10;i++)
{ u(0)=3
cout<<"Tapez un entier : u(n+1)=3*u(n)+4
";cin>>x; Solution
if(i==0)ppt=x;else
if(x<ppt)ppt=x; Cet exercice a pour but de vérifier les points
} techniques suivants :
}while(x!=0);
EXERCICE 13
if(nb==0)cout<<"AUCUN ENTIER TAPE
"<<endl<<"PAS DE MOYENNE"<<endl; Écrire un programme qui demande de saisir
else { 10 entiers et qui affiche le nombre
moyenne=(double)s/nb; d'occurrences de la note la plus haute.
cout<<"La moyenne vaut : Solution
"<<moyenne<<endl;
} Cet exercice a pour but de vérifier les points
techniques suivants :
return 0;
} Utilisation d'un for.
Étude d'un algorithme usuel de
difficulté moyenne : calcul du
EXERCICE 12 nombre d’occurrence d'une valeur.
Écrire un programme qui demande à Voici le fichier source :
l'utilisateur de taper un entier N et qui
calcule u(N) défini par :
u(0)=3 #include<iostream>
u(1)=2 using namespace std;
u(n)=n.u(n-1)+(n+1).u(n-2)+n
int main()
Solution {
int nb,max,x,i;
Cet exercice a pour but de vérifier les points
techniques suivants : for (i=0; i<10; i++)
{
Utilisation d'un for. cout << "Tapez un entier :
Étude d'un algorithme usuel : ";
calcul d'une suite récurrente assez cin >> x;
difficile. if(i == 0)
Modélisation d'un problème issu {
des mathématiques. max = x;
nb = 1;
Voici le fichier source : }
else if (x == max)
#include<iostream> nb++;
else if (max < x)
int main() {
{ max=x;
int N,u,v,w; nb=1;
}
cout<<"Tapez la valeur de N : }
";cin>>N;
u=3; cout<< "le nombre d'occurences de
v=2; "<< max << " est " << nb << endl;
if(N==0)w=u;
else if(N==1)w=v; return 0;
} using namespace std;
int main()
EXERCICE 14 {
int n;
Écrire un programme qui demande de saisir bool premier=true;
un entier N et qui affiche N!. int d=2;
Solution
cout<<"Veuillez saisir un entier :
Cet exercice a pour but de vérifier les points ";cin>>n;
techniques suivants :
if(n<=1)premier=false;
Utilisation du for. else
Étude d'un algorithme usuel : {
calcul d'une factorielle. while(premier==true &&
Modélisation d'un problème issu d*d<=n)
if(n
des mathématiques.
%d==0)premier=false; else d=d+1;
Voici le fichier source : }
if(premier)cout<<n<<" est
premier"<<endl;
#include<iostream> else cout<<n<<" n'est pas
using namespace std; premier"<<endl;
int main() return 0;
{ }
int N,i,f=1;
return 0;
} EXERCICE 18
Écrire un programme qui demande à
EXERCICE 17 l'utilisateur de saisir un entier N et qui affiche
la figure suivante.
Écrire un programme qui demande à
l'utilisateur de saisir un entier N et qui affiche
le N-ième nombre premier. N=1
*
Solution N=2
**
Cet exercice a pour but de vérifier les points
*
techniques suivants :
N=3
***
Utilisation des **
boucles for et while. *
Imbrication de boucles assez
complexe.
et ainsi de suite
Lire précisément un énoncé.
Modélisation assez complexe d'un Solution
problème issu des Cet exercice a pour but de vérifier les points
mathématiques. techniques suivants :
Voici le fichier source :
Utilisation des boucles for.
#include<iostream> Imbrication de boucles assez
using namespace std; complexe.
Voici le fichier source :
int main()
{
int N,i=2,nb=0,d; #include <iostream>
bool est_premier;
using namespace std;
int main()
{ int main()
int N=0; {
cout<<"Saisissez une valeur int i,j,N;
pour N: ";
cin>>N; cout<<"Tapez la valeur de N :
cout<<endl<<endl; ";cin>>N;
cout<<"N= "<<N<<endl;
for(int i=0;i<N;i++) for(i=1;i<=N;i++)
{ {
for(j=1;j<i;j++)cout<<" ";
for(int j=0;j<(N-i);j+ for(j=1;j<=N+1-i;j+
+) +)cout<<"*";
{ cout<<endl;
cout<<"*"; }
} return 0;
cout<<endl; }
}
cout << "Appuyez sur une
touche pour continuer ..." << EXERCICE 20
endl;
[Link](); On considère la suite hongroise : u(0)=a (a
[Link](); entier)
return 0; si u(n) pair alors u(n+1)=u(n)/2 sinon
} u(n+1)=3*u(n)+1
Pour toutes les valeurs a, il existe un entier
N tel que u(N)=1 (conjecture admise).
EXERCICE 19
a) Écrire un programme qui demande à
Écrire un programme qui demande à
l'utilisateur de taper a et qui affiche toutes
l'utilisateur de saisir un entier N et qui affiche
les valeurs de u(n) de n=1 à n=N.
la figure suivante.
Solution
N=1 Cet exercice a pour but de vérifier les points
* techniques suivants :
N=2
** Utilisation du while.
*
Lire précisément un énoncé.
N=3
*** Modélisation assez complexe d'un
** problème issu des
* mathématiques.
Voici le fichier source :
et ainsi de suite
#include<iostream>
Solution
using namespace std;
Cet exercice a pour but de vérifier les points
techniques suivants : int main()
{
Utilisation des boucles for. int a,n,u;
cout<<"Tapez la valeur de a :
Imbrication de boucles. ";cin>>a;
Voici le fichier source : n=0;
u=a;
#include<iostream>
using namespace std; while(u!=1)
{ cout<<"La valeur de A
if(u%2==0)u=u/2; else est :"<<amax<<endl;
u=3*u+1; cout<<"La valeur de N
n++; correspondante est :"<<nmax<<endl;
cout<<"u("<<n<<")="<<u<<endl; return 0;
} }
return 0;
}
EXERCICE 2 EXERCICE 3
Écrire un programme qui demande à Écrire un programme qui demande à
l'utilisateur de saisir 10 entiers stockés dans l'utilisateur de saisir 10 entiers stockés dans
un tableau ainsi qu'un entier V. Le un tableau. Le programme doit ensuite
programme doit rechercher si V se trouve afficher l'indice du plus grand élément.
dans le tableau et afficher "V se trouve dans
Solution
le tableau" ou "V ne se trouve pas dans le
tableau". Cet exercice a pour but de vérifier les points
techniques suivants :
Solution
Cet exercice a pour but de vérifier les points Utilisation simple de tableaux.
techniques suivants : Un algorithme simple sur un
tableau : recherche de l'indice du
Utilisation simple de tableaux. plus grand élément.
Un algorithme simple sur un Voici le fichier source :
tableau : recherche d'un élément
dans un tableau.
#include<iostream>
Voici le fichier source : using namespace std;
EXERCICE 4
EXERCICE 5
Écrire un programme qui demande à
l'utilisateur de saisir 10 entiers stockés dans Écrire un programme qui demande à
un tableau ainsi qu'un entier V. Le l'utilisateur de saisir 10 entiers stockés dans
programme doit rechercher si V se trouve un tableau ainsi qu'un entier V et un entier i
dans le tableau et doit supprimer la valeur compris entre 0 et 9. Le programme doit
de V et doit afficher le tableau final. décaler d'une case vers la droite tous les
éléments à partir de l'indice i (en supprimant
Solution
le dernier élément du tableau) et doit mettre
Cet exercice a pour but de vérifier les points la valeur V dans le tableau à l'indice i. Le
techniques suivants : programme doit ensuite afficher le tableau
final.
Utilisation simple de tableaux. Solution
Un algorithme simple sur un
tableau : suppression d'un
Cet exercice a pour but de vérifier
élément avec décalage des
les points techniques suivants :
suivants.
o Utilisation simple de
Voici le fichier source : tableaux.
o Un algorithme simple
#include<iostream> sur un tableau :
using namespace std; insertion dans en
tableau avec
int main() décalage.
{ Voici le fichier source :
int tab[10], r = 0;
for (int i=0 ; i<10 ; i++) #include<iostream>
{ using namespace std;
cout << "Saisir le
nombre " << i+1 << ": "; const int N=10;
cin >> tab[i];
} int main()
{
cout << "Choisissez la int t[N],i,indice,V;
valeur à supprimer : "; cin >> V;
for(i=0;i<N;i++){cout<<"Tapez un
for (int i=0 ; i<10 ; i++) entier ";cin>>t[i];}
{ cout<<"Tapez un indice (de 0 à
if (r==0 && tab[i] 9) : ";cin>>indice;
== V) r=1; cout<<"Tapez la valeur de V :
else tab[i-1] = ";cin>>V;
tab[i];
} if(indice>=0 && indice<=N-1)
for (int i=0 ; i<10-r ; i+ {
+) // 9 nombre si V supprimé, 10 for(i=N-
sinon. 1;i>indice;i--)t[i]=t[i-1];
{ t[indice]=V;
}
if(croissant && decroissant)
for(i=0;i<N;i++)cout<<t[i]<<endl; cout<<"le tableau est
constant"<<endl;
return 0; if(croissant && !decroissant)
} cout<<"le tableau est
croissant"<<endl;
if(!croissant && decroissant)
EXERCICE 6 cout<<"le tableau est
decroissant"<<endl;
Écrire un programme qui demande à if(!croissant && !decroissant)
l’utilisateur de taper 10 entiers qui seront cout<<"le tableau est
stockés dans un tableau. Le programme doit quelconque"<<endl;
ensuite afficher soit "le tableau est
croissant", soit "le tableau est décroissant", return 0;
soit "le tableau est constant", soit "le tableau }
est quelconque".
Solution Solution 2:
#include<iostream> else {
using namespace std;
cout<<"VOICI LA
const int N=10; LISTE"<<endl;
int main()
{ for(i=0;i<nb;i+
+)cout<<t[i]<<" ";
int
t[N],nb=0,choix,e,V,i,j,trouve; cout<<endl;
bool fini=false;
}
while(fini==false) break;
{
cout<<"1. Ajouter un case 3 :
entier"<<endl; cout<<"Tapez la valeur à
cout<<"2. Afficher la liste supprimer :";cin>>V;
des entier"<<endl;
cout<<"3. Supprimer le trouve=false;
premier entier ayant une valeur
donnée"<<endl; i=0;
cout<<"4. Supprimer tous
les entiers ayant une valeur while(!trouve &&
donnée"<<endl; i<nb)if(t[i]==V)trouve=true; else
cout<<"5. Quitter"<<endl; i++;
cout<<"Votre choix :
";cin>>choix; if(trouve)
switch(choix)
{ {
case 1 : if(nb<N)
for(j=i;j<nb-1;j+
{ +)t[j]=t[j+1];
EXERCICE 13 EXERCICE 14
Écrire un programme qui demande à Écrire un programme qui demande à
l'utilisateur de taper un entier N<=20 et qui l'utilisateur de taper 10 entiers compris entre
affiche la N-ième ligne du triangle de pascal. 0 et 20 qui seront stockés dans un tableau et
ligne 1 : 1 1 qui affiche le nombre de fois qu'on a tapé un
ligne 2 : 1 2 1 0, le nombre de 1, le nombre de 2, ..., le
ligne 3 : 1 3 3 1 nombre de 20.
ligne 4 : 1 4 6 4 1
Solution
et ainsi de suite ...
Solution #include<iostream>
using namespace std;
Cet exercice a pour but de vérifier les points
techniques suivants : int main()
{
Utilisation simple de tableaux. int a[10], nb[21], i;
Itération des éléments d'un
tableau. for(i=0 ; i<10;i++)
{
Voici le fichier source : do { cout <<
"Veuillez taper l'entier numéro "
#include<iostream> << i << " : "; cin >> a[i]; }
using namespace std; while (a[i]>20 ||
a[i]<0);
int main() }
{
int a[21],i,j,N; for(i=0 ; i<21 ; i++) nb[i]
= 0;
cout << "Veuillez taper N : for(i=0 ; i<10 ; i++)
"; cin >> N; nb[a[i]]++;
if (N<0 || N>20)
{ for(i=0 ; i<21 ; i++) {
cerr << "Nombre cout << "Il y a " << nb[i] << "
invalide." << endl; fois l'entier " << i << endl; }
return 1; return 0;
} }
a[0]=1;
EXERCICE 15
for(i=1 ; i<=N ; i++) Écrire un programme qui demande à
{ l'utilisateur de taper le contenu d'un tableau
a[i]=1; de réels de 3 lignes et 3 colonnes et qui
for(j=i-1 ; j>=1 ;
affiche ce tableau mais en affichant la
j--)
a[j] = a[j] moyenne des éléments de chaque ligne, de
+ a[j-1]; chaque colonne et la moyenne globale.
} Solution
for(i=0;i<=N;i++) cout << Cet exercice a pour but de vérifier les points
a[i] << " "; techniques suivants :
Utilisation de tableaux à 2
dimensions.
Modélisation d'un problème // Affichage
mathématique basique. for(i=0 ; i<N ; i++)
{
Voici le fichier source : for(j=0 ; j<M ; j+
+)
#include<iostream> cout <<
using namespace std; t[i][j] << " ";
cout << " -->
// Taille du tableau Moyenne de la ligne = " << moyL[i]
const int N=3; <<endl;
const int M=3; }
for(j=0 ; j<M ; j++)
int main() cout << moyC[j] <<
{ " ";
double t[N] cout << " <-- Moyenne des
[M],moyL[N],moyC[M],moy; colonnes " << endl;
int i,j;
cout << "Moyenne totale = "
for(i=0 ; i<N ; i++) << moy << endl;
for(j=0 ; j<M ; j+ return 0;
+) }
{
cout <<
"Tapez la valeur de la ligne " <<
i << " colonne " << j << " : ";
cin >> t[i]
[j];
}
// Initialisation
for(i=0 ; i<N ; i++) Exercice 1[modifier | modifier le
moyL[i]=0; wikicode]
for(j=0 ; j<M ; j++)
moyC[j]=0; Écrire une fonction qui a en paramètres une
moy = 0; chaîne de caractères (paramètre en entrée)
et un entier e (paramètre en sortie). Cette
// Ajout des valeurs fonction renvoie un booléen. La fonction
for(i=0 ; i<N ; i++) renvoie true si la chaîne de caractères est
for(j=0 ; j<M ; j+ un entier écrit sous la forme d'une suite de
+) chiffres qui ne commence pas par 0, elle
{ renvoie false sinon. Si la chaîne est correcte,
moyL[i] = la fonction renvoie dans e la valeur de cet
moyL[i] + t[i][j]; entier.
moyC[j] =
moyC[j] + t[i][j]; Solution
moy = moy + Cet exercice a pour but de vérifier les points
t[i][j]; techniques suivants :
}
int longueurChaine =
#include <iostream>
strlen(chaine);
if (longueurChaine <= 2 ||
chaine[longueurChaine-1] !
int main() {
= 'r' || chaine[longueurChaine-2]
!= 'e') {
char phrase[50];
char mot[50];
validation d'une chaîne.
if (chaine[index] //
>= 'A' && chaine[index] <= 'Z') { Réprésentation du maximal sous
forme de caractère
if (index <
poidsDesLettres[chaine[index] - 26) {
'A']++; cmax
} else if = (char)(index + 'A');
(chaine[index] >= 'a' && } else {
chaine[index] <= 'z') { cmax
= (char)(index - 26 + 'a');
}
poidsDesLettres[chaine[index] - }
'a' + 26]++; }
}
index++;
std::cout << "La lettre la cout<<"Tapez l'ordonnée de B :
plus fréquente est : " << cmax << ";cin>>y2;
std::endl;
return EXIT_SUCCESS; d=distance(x1,y1,x2,y2);
}
cout<<"La distance AB vaut :
"<<d<<endl;
return 0;
}
private:
unsigned int largeur;
unsigned int hauteur;
};
EXERCICE 1 :
Rectangle::Rectangle(unsigned int
Rectangle[modifier | modifier le initLargeur, unsigned int
wikicode] initHauteur)
{
Écrire un programme utilisant une classe largeur = initLargeur;
rectangle dont le constructeur prend deux hauteur = initHauteur;
paramètres, largeur et hauteur et qui offre }
les fonctions suivantes :
Rectangle::~Rectangle()
calcul du périmètre, {
}
calcul de la surface,
affichage, void Rectangle::afficher()
ainsi que les accesseurs et {
mutateurs triviaux (lecture et for(unsigned int i=0; i <
modification de la largeur et de hauteur; i++)
la hauteur). {
Solution for(unsigned int j=0; j <
largeur; j++)
Découverte et travail des classes. Utilisation cout << "*";
d'un constructeur et d'un destructeur. cout << endl;
}
}
#include<iostream>
int main()
#include <cstdlib>
{
Rectangle monRectangle(0,0);
char choix = '0'; }
unsigned int value; }
return 0;
while(true) }
{
do
{
cout << " Rectangle - Menu"
EXERCICE 2 : Pile
<< endl; d'entiers[modifier | modifier le
cout << "1 - Modifier wikicode]
largeur du rectangle" << endl;
cout << "2 - Modifier Une pile est un ensemble dynamique
hauteur du rectangle" << endl; d’éléments où le retrait se fait d’une façon
cout << "3 - Calculer les particulière. En effet, lorsque l’on désire
propriétés du rectangle" << endl; enlever un élément de l’ensemble, ce sera
cout << "4 - Afficher le toujours le dernier inséré qui sera retiré. Un
rectangle" << endl; objet pile doit répondre aux fonctions
cout << "5 - Quitter" << suivantes :
endl;
// déclaration de la classe
Fichier
class Fichier
{
char* p;
unsigned int taille_buffer;
public:
Fichier();
~Fichier();
bool creation(unsigned
int);
EXERCICE 4 :
void remplit();
void affiche(); Point[modifier | modifier le
}; wikicode]
// constructeur Réaliser une classe point permettant de
Fichier::Fichier() manipuler un point d'un plan. On prévoira :
{
p = NULL; les coordonnées x et y du point
taille_buffer = 0; en membres privés,
} un constructeur (vous pouvez
également implémenter les trois
// destructeur
types de constructeur),
Fichier::~Fichier()
{ une fonction
delete[] p; membre déplace effectuant une
} translation définie par ses deux
arguments dx et dy (double),
// méthode Creation une fonction
bool Fichier::creation(unsigned membre affiche affichant les
int taille) coordonnées cartésiennes du
{ point,
if ((p = new
char[taille])==NULL) return false; une fonction
taille_buffer = taille; membre saisir permettant de
return true; saisir les coordonnées
} cartésiennes du point,
une fonction
// Méthode Remplit membre distance effectuant
void Fichier::remplit() calculant la distance entre deux
{ points,
for(unsigned int i=0 ;
une fonction
i<taille_buffer ; i++) P[i]='a';
} membre milieu donnant le
milieu d'un segment.
// Méthode Affiche On écrira séparément :
void Fichier::affiche()
{
for(unsigned int i=0 ; un ficher source constituant la
i<taille_buffer ; i++) cout<<P[i]; déclaration et la définition de la
} classe,
un petit programme d'essai
//-----Programme maître gérant la classe point.
(main)-------------- Solution
int main()
{ Découverte et travail des classes. Utilisation
Fichier* f = new Fichier(); d'un constructeur et d'un destructeur.
if (f->creation(10))
{
f->remplit(); #include <iostream.h>
f->affiche(); #include <math.h>
} class point
delete f; {
return 0; double x;
} double y;
public:
point();
point(double,double); {
point(point &); double p1,x1,x2;
~point(); x1=(get_x()-
double get_x(); p.get_x())*(get_x()-p.get_x());
double get_y(); x2=(get_y()-
void set_x(double x1); p.get_y())*(get_y()-p.get_y());
void set_y(double y1); //p1=sqrt(((get_x()-
point deplace(double dx, double p.x)*((get_x()-p.x))+((get_y()-
dy); p.y)*(get_y()-p.y)));
void affiche(); p1=sqrt(x1+x2);
void saisir(); return p1;
double distance(point &); }
point milieu(point &); void point::affiche()
{
}; cout<<"les coordonnées
sont:"<<endl;
point::point() cout<<"x="<<get_x()<<endl;
{} cout<<"y="<<get_y()<<endl;
point::point(double a,double b) }
{ void point::saisir()
x=a; {
y=b; cout<<"donnée les
} coordonnées:"<<endl;
point::point(point &p) cout<<"x="<<endl;
{ cin>>x;
set_x(p.get_x()); cout<<"y="<<endl;
set_y(p.get_y()); cin>>y;
} }
point::~point() point point::milieu(point &p)
{} {
double point::get_x() point p1;
{ p1.x=(get_x()+p.get_x())/2;
return x; p1.y=(get_y()+p.get_y())/2;
} return p1;
double point::get_y() }
{
return y; //programme d'essai(main)
}
void point::set_x(double a) #include<iostream.h>
{ #include "pointt.h"
x=a; void main()
}
void point::set_y(double a)
{
y=a;
}
point point::deplace(double
dx,double dy)
{
set_x(get_x()+dx);
set_y(get_y()+dy);
return *this;
}
double point::distance (point &p)
{point p(1,1);
Utilisation d'un constructeur et
point x(5,5); d'un destructeur.
point c;
Fichier Compteur.h : déclaration de la classe
[Link](); Compteur
[Link](5,5);
[Link](); class Compteur { protected: /*
cout<<"la distance est : i.e. visible des classes dérivées
"<<[Link](x); */
c=[Link](x); int _valeur; public:
[Link](); /* i.e. l'interface de la classe
*/
Compteur(); /*
} le constructeur, invoque a la
création */
void incr();
EXERCICE 5 : void decr();
int valeur(); /*
Compteur[modifier | modifier le permet un accès "read-only" a
wikicode] l'attribut */
};
On souhaite implémenter une classe
représentant un compteur entier. Un tel objet
se caractérise par : Fichier [Link] : implémentation de la
classe Compteur
Une valeur entière, positive ou
nulle, nulle à l'origine. #include <iostream.h>
Le fait qu'il ne peut varier que #include "Compteur.h"
par pas de 1 (incrémentation ou
décrémentation). On convient /
qu'une décrémentation d'un **********************************
compteur nul est sans effet. ***************************/
Compteur :: Compteur()
Il s'agit de créer une classe Compteur pour {
rendre le service demandé. On écrira en _valeur = 0;
outre un petit programme de test qui : }
1. créera un compteur et /
affichera sa valeur ; **********************************
***************************/
2. l'incrémentera 10 fois, puis void Compteur :: incr()
affichera à nouveau sa {
valeur ; _valeur ++;
3. le décrémentera 20 fois, }
puis affichera une troisième
fois sa valeur. /
**********************************
La sortie de ce programme doit donner ***************************/
quelque chose comme : void Compteur :: decr()
{
0 if (_valeur>0) _valeur--;
10 }
0
/
**********************************
Solution ***************************/
int Compteur :: valeur()
Découverte et travail des classes.
les méthodes suivantes :
{
return _valeur; - void saisie (), permettant la saisie d’un
} étudiant
- void affichage (), permettant l’affichage
Fichier [Link] : implémentation d’un étudiant
de la classe Compteur - float moyenne (), retourne comme résultat
la moyenne des notes d’un étudiant.
#include <iostream.h> - int admis (), retourne comme résultat la
#include "Compteur.h" valeur 1, si un étudiant est admis et la valeur
0, sinon. Un étudiant est considéré comme
/ étant
**********************************
***************************/ admis lorsque la moyenne de ses notes est
int main () { supérieure ou égale à 10.
float moyenne() ; }
{ int i ; som + =
tabnotes[i] ;
cout << "Donner le
nom :" ; return (som/10)
{ private:
float note_memoire ;
public :
liste()
{
début = NULL;
}
~liste()
{ EXERCICE 1 : La classe
while(début != NULL)
{ string[modifier | modifier le wikicode]
supprimer(); Soit une chaîne de caractères contenant une
} date (JJ/MM/AAAA) et une heure (HH:NN)
}
sous la forme JJMMAAAAHHNN. Par
exemple 010920091123 représente la date
Ajouter et supprimer
du 1er septembre 2009 à 11h23.
Créer un programme permettant d'extraire
void ajouter(T var)
les différents champs et de les afficher.
{
if(début == NULL) Solution
{
Cet exercice a pour but de vérifier les points
début = new element<T>;
début->suivant = NULL; techniques suivants :
}
else Manipulation des chaînes de
{ caractères.
element<T> * p = new element<T>; Voici le fichier source :
p->suivant = début;
début = p;
} #include <iostream>
début->var = var; #include <iomanip>
} #include <string>
Voici le fichier source :
using namespace std;
#include <iostream>
void afficherDateEtHeure(const
#include <fstream>
string& s)
{
int main (int argc, char * argv[])
if ( [Link]() != 12 )
{
cerr << "Chaine invalide."
std::ofstream myfile;
<< endl;
char * filename = "[Link]";
else
[Link] (filename,
{
std::ios::out);
cout << "Date : " <<
if(myfile.is_open())
[Link](0,2) << "/" <<
{
[Link](2,2) << "/" <<
myfile << "Hello world \n";
[Link](4,4) << endl;
myfile << "Voici un
cout << "Heure : " <<
programme illustrant l'écriture
[Link](8,2) << "h" <<
dans un fichier \n";
[Link](10,2) << endl;
}
}
else
}
{
std::cout << "Erreur à
int main(int argc, char** argv)
l'ouverture du fichier "<<
{
filename << std::endl;
string s("010920091123");
}
afficherDateEtHeure(s); //
[Link]();
exemple
return 0;
}
}
[Link]((char*)&i,sizeof(int)
Les fichiers : Lecture et );
écriture en mode }
}
binaire[modifier | modifier le else
wikicode] {
std::cout << "Erreur à
EXERCICE 1[modifier | modifier le l'ouverture du fichier "<<
wikicode] filename << std::endl;
}
Proposez un programme qui écrit en binaire [Link]();
une chaîne de caractère suivant de la liste return 0;
des entiers de 0 à 1000 : }
Solution
Liste des entiers de 1 à 1000
Cet exercice a pour but de vérifier les points 0
techniques suivants : 1
2
L'ouverture d'un fichier en écriture ...
1000
en mode binaire
Solution
Cet exercice a pour but de vérifier les points
techniques suivants : return 0;
}
L'ouverture d'un fichier en lecture
en mode binaire
Tester si un fichier est ouvert (en
particulier si vous avez les droits
de lecture sur le fichier)
Lecture des données écrites en
binaire
Fermer le fichier une fois la lecture
terminée
Voici le fichier source :
#include <iostream>
#include <fstream>
[Link](buffer,29*sizeof(char)
);
std::cout << buffer <<
std::endl;
for(int i = 0 ; i <= 1000 ;
i++)
{
[Link]((char*)&value,sizeof(i
nt));
std::cout << value <<
std::endl;
}
}
else
{
std::cout << "Erreur à
l'ouverture du fichier "<<
filename << std::endl;
}
[Link]();