0% ont trouvé ce document utile (0 vote)
46 vues61 pages

Exercice 52

Le document contient une série d'exercices de programmation en pseudo-code, C, C++, Java et C#. Chaque exercice aborde des concepts fondamentaux tels que le calcul de prix TTC, la vérification de la parité d'un nombre, le calcul de la longueur d'une chaîne, et des opérations sur des entiers comme le PGCD et la factorielle.

Transféré par

djidel2023
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
46 vues61 pages

Exercice 52

Le document contient une série d'exercices de programmation en pseudo-code, C, C++, Java et C#. Chaque exercice aborde des concepts fondamentaux tels que le calcul de prix TTC, la vérification de la parité d'un nombre, le calcul de la longueur d'une chaîne, et des opérations sur des entiers comme le PGCD et la factorielle.

Transféré par

djidel2023
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Exercice 52

Écrire une fonction qui permet de calculer le prix TTC , cette fonction va
recevoir un paramètre de type Réel dont le nom est "prixHT" et un second
paramètre de type Réel dont le nom est "tva".

Réponse
fonction calculPrixTTC( prixHT, tva: réel): réel
Variables prixTTC : réel
Début
prixTTC ← prixHT * (1 + tva / 100)
retourner prixTTC
Fin

Exercice 53
Écrire une procédure qui permet d'afficher si un nombre entier passé en
paramètre est pair ou impair.

Réponse
procédure parite (nb:entier)
Début
if(nb mod 2 = 0) alors
Ecrire (nb,"est impair")
Sinon
Ecrire (nb," est pair")
Fin

Exercice 54

Écrire une fonction qui permet de retourner le nombre de caractères d’une


chaîne de caractères passée en paramètre.

Réponse

Fonction longueurChaine (chaine[]: tableau de caractères) : entier


Variables longueur : entier
longueur ← 0
tant que (chaine [longueur] ≠ '\0') faire
longueur ← longueur. + 1
FinTantque
retourner longueur
Fin

Exercice 55

Écrire une fonction qui cherche combien de fois un caractère est présent
dans une chaîne de caractères. Le caractère à chercher et la chaîne seront
passés en paramètres.

Réponse

Fonction nombreOccurence(texte[] : tableau de caractères , c : caractère) :


entier
Début
Variables nbCar, i : entiers
nbCar ← 0 i ←0
Tantque (texte[i] ≠ '\0') faire
Si (texte[i] = c)
nbCar ←nbCar + 1
. i ←i + 1
FinSi
FinTantque
retourner. nbCar
Fin

Exercice 56
Ecrire une fonction ou procédure qui calcule la valeur absolue d’un
nombre.

Réponse
Fonction absolue (x : réel) : réel

Debut
Si ( x > 0 ) alors
retourner x
Sinon
retourner - x
Fin
Exercice 57
Ecrire une procédure qui affiche le tableau de multiplication d’un entier
positif x.

Réponse
Procedure Multipl (x: entier)

Variables
i : entier
Debut

Pour i de 1 à 10 faire

Ecrire (x, ‘X’, i, ‘= ‘, x*i)


FinPour
Fin

Exercice 58
Ecrire une fonction qui calcule le PGCD de deux entiers strictement
positifs.

Réponse
Fonction PGCD (a , b : entier) : entier
Début
Tantque (a * b ≠ 0) Faire
Si ( a > b ) Alors
a← a-b
Sinon
b← b - a
FinSi
FinTantque
Si (a = 0) alors
retourner b
Sinon
retourner a
FinSi
Fin

Exercice 59
Ecrire une procédure qui permet de lire deux nombres, calculer la somme
et le produit et affiche
si ces derniers sont positifs ou négatifs.

Réponse
Procedure calcul (a,b: réel)
variables
som, prod : réels
Debut
Lire (a, b)
som ← a + b
prod ← a * b
Si (som ≥ 0) Alors
Ecrire ("la somme est positive")
Sinon
Ecrire ("la somme est négative")
FinSi
Si (prod ≥ 0 ) Alors
Ecrire ("le produit est positif ")
Sinon
Ecrire (" le produit est négatif ")
FinSi
Fin

Exercice 60
Ecrire une procédure qui permet de lire une liste de nombres entiers (N
nombres) dont la dernière valeur = -1
et affiche le nombre d’entiers pairs et leur pourcentage par rapport au
nombre d’entiers donnés.

Réponse

Procedure Nombres
Variables
x, N, N_pairs: entiers
pourcent : reel
Debut
N ← 0
N_pairs ← 0
Repeter
Lire (x)
N← N +1
Si (x mod 2 = 0 ) alors
N_pairs ← N_pairs + 1
FinSi
Jusqu’à (x = -1)
pourcent ← N_pairs * 100 / N
Ecrire ("Nombre de valeurs paires = ", N_pairs, "et leur pourcentage = ",
pourcent)
Fin

Exercice 61
Ecrire une procédure qui permet d’entrer deux valeurs M et N et
d’afficher toutes les valeurs paires entre M et N si M < N.

Réponse

Procedure paires (M,N: entiers)


Variables
Debut
Si (M >= N) Alors
Ecrire ("Erreur !!!!")
Sinon
Tantque (M < N) Faire
Si (M mod 2 = 0 ) Alors
Ecrire (M)
FinSi
M← M+1
FinTantque
FinSi
Fin

Exercice 62
Ecrire une procédure qui affiche si un nombre est premier ou non.

Réponse
Procedure premier (a : entier)

Variables
test : booleen
d : entier
Debut
test ← vrai
d← 2
Tantque ( d ≤ a/2 et test = vrai ) Faire
Si (a mod d = 0) Alors
test ← Faux
Sinon
d← d+1
FinSi
FinTantque
Si ( test = vrai) Alors
Ecrire (a, "est premier")
Sinon
Ecrire (a, "n'est pas premier")
FinSi
Fin

Exercice 63

Écrire une fonction récursive qui permet de calculer le factorielle d'un


entier saisi par l'utilisateur.

Fonction factorielle (n: entier): entier


Début

Si (n=0 ou n= 1) alors

retourner 1
Sinon retourner factorielle (n-1)*n

FinSi

Fin

Exercice 64

Écrire une fonction récursive qui permet de calculer la somme 1+2+3+...+


N. où N saisi par l'utilisateur.

Fonction somme ( n: entier): entier


Début

Si (n=0) alors

retourner 0
Sinon
retourner somme (n-1)+n
FinSi
Fin

Exercice 65

Écrire une fonction récursive permettant, à partir d'un réel x et d'une


valeur entière positive n, de calculer x puissance n .

Fonction puissance (r: réel, n: entier): réel

Début

Si (n=0) alors retourner 1


Sinon retourner puissance (r,n-1)*r
FinSi
Fin

Exercice 66

Écrire une fonction récursive qui permet d'afficher les entiers de 0 à


10 .utilisant un seul paramètre.

Procédure compteur (i: entier)

Début
Ecrire (10-i,"\n")
Si (i>0) alors
i← i+1 compteur (i)
FinSi
Fin

Exercice 67

Écrire une fonction récursive qui permet d'afficher les entiers de A à B .


Où A et B sont des paramètres de cette fonction.'

Procédure compteur (i: entier, n: entier)


Début
Ecrire (i,"\n")
Si (i<n) alors
i← i+1

compteur (i,n)

FinSi
Fin

Exercice 68

Écrire une fonction récursive qui permet de calculer le PGCD de deux


entiers passés en paramètres,( utiliser l'algorithme d'Euclide).

Fonction Euclide(a: entier,b:entier): entier

Début

Si( b = 0) alors

retourner a

FinSi

retourner Euclide (b, a mod b)

Fin

Exercice 69

Écrire une fonction récursive qui permet d'afficher les éléments d'une
matrice passée en paramètre

Procédure affiche(tab[3][4]: tableau d'entiers, a: entier, b: entier)

Début

Si( a < 3 ) alors

Si(b < 4) alors


Ecrire (tab[a][b])

affiche(tab,a,b+1)

Sinon

printf("\n")

affiche(tab,a+1,0)

FinSi

FinSi

Fin

Exercice 70

Écrire une fonction récursive qui permet de calculer l'image d'un entier
(passé en paramètre) par une suite de Fibonacci. Suite de Fibonacci est une
suite d'entiers dans laquelle chaque terme est la somme des deux termes qui
le précèdent. F(0)=F(1)=1

Fonction Fibonacci (n: entier): entier

Début

Si(n =0 ou n =1) alors

Retourner 1

Sinon

Retourner Fibonacci(n-2)+ Fibonacci(n-1)

FinSi

Fin

AccueilswitchExercice 28
Exercice 28
******** En Algorithme ********

Algorithme Variables Tab[10],nb_rech:réels nb_occ,i:entiers nb_occ ← 0


pour i de 1 jusqu'à 10 faire Ecrire("Entrer un entier:") Lire(Tab[i]) FinPour
Ecrire("Entrer Le nombre recherché:") Lire(nb_rech) pour i de 1 jusqu'à 10
faire Si( Tab[i] = nb_rech ) alors nb_occ ← nb_occ +1 FinSi FinPour
Ecrire("Nombre d'occurences de",nb_rech,"est",nb_occ) Fin Résultat ==> 7
6 3 7 5 6 9 0 7 1 Entrer Le nombre recherché: 7 Nombre d’occurrences de 7
est 3

Retour vers la liste d'exercices

******** En C ********

#include <stdio.h> int main(){ int Tab[10],nb_occ=0,i,nb_rech; for( i=0; i <


10; i++){ printf("Entrer un entier:"); scanf("%d",&Tab[i]); } printf("Entrer
Le nombre recherché:"); scanf("%d",&nb_rech); for( i=0; i < 10; i++){ if
( Tab[i] == nb_rech ) nb_occ ++ ; } printf("Nombre d'occurences de %d est
%d",nb_rech,nb_occ); return 0; }

Retour vers la liste d'exercices

******** En C++ ********

#include <iostream> using namespace std; int main(){ int


Tab[10],nb_occ=0,i,nb_rech; for( i=0; i < 10; i++){ cout<<"Entrer un
entier:"; cin>>Tab[i]; } cout<<"Entrer Le nombre recherché:");
cin>>nb_rech; for( i=0; i < 10; i++){ if (Tab[i] == nb_rech) nb_occ ++ ; }
cout<<"Nombre d'occurences de"<<nb_rech<<"est"<<nb_occ; return 0; }

Retour vers la liste d'exercices

******** En JAVA ********

import java.util.Scanner;
class Main {
public static void main(String[] args){
Scanner sc = new Scanner (System.in);
int[] Tab=new int [10];
int nb_occ=0,i,nb_rech;

for( i=0; i < 10; i++){


System.out.print("Entrer un entier :");
Tab[i] = sc.nextInt();
}

System.out.print("Entrer Le nombre recherche:");


nb_rech = sc.nextInt();

for( i=0; i < 10; i++){


if ( Tab[i] == nb_rech )
nb_occ ++ ;
}
System.out.print("Nombre doccurences de "+nb_rech+" est "+nb_occ);
}
}

Retour vers la liste d'exercices

******** En C# ********
public class Ex28{
public static void Main(string[] args)
{ int nb_occ=0,i,nb_rech;
int [] Tab = new int [10];
for( i=0; i < 10; i++){
Console.Write("Entrer un entier :");
Tab[i]=int.Parse(System.Console.ReadLine());
}

Console.Write("Entrer Le nombre rechercheé:");


nb_rech = int.Parse(System.Console.ReadLine());

for( i=0; i < 10; i++){


if ( Tab[i] == nb_rech )
nb_occ ++ ;
}
Console.Write("Nombre doccurences de "+nb_rech+" est "+nb_occ);
}
}
AccueilswitchEx29(Algorithme, C, C++, java, Python, C#)
Ex29(Algorithme, C, C++, java, Python, C#)

******** En Algorithme ********


Algorithme Variables Tab[10],auxilaire,i,j:entiers pour i de 1 jusqu'à 10
faire Ecrire("Entrer un entier:") Lire(Tab[i]) FinPour pour i de 1 jusqu'à 9
faire pour j de i+1 jusqu'à 10 faire Si ( Tab[j] < Tab[i]) alors auxilaire ←
Tab[i] Tab[i] ← Tab[j] Tab[j] ← auxilaire FinSi FinPour FinPour pour i de
1 jusqu'à 10 faire Ecrire(Tab[i]) FinPour Fin Résultat ==> 7 6 3 5 4 2 8 0 7
10123456778

Retour vers la liste d'exercices

******** En C ********

#include <stdio.h> int main(){ int Tab[10],auxilaire,i,j; for( i=0; i < 10; i++){
printf("Entrer un entier:"); scanf("%d",&Tab[i]); } for( i=0; i < 9; i++)
{ for( j=i+1; j < 10; j++){ if ( Tab[j] < Tab[i]) { auxilaire = Tab[i] ; Tab[i] =
Tab[j] ; Tab[j] = auxilaire ; } } } for( i=0; i < 10; i++) printf("%d\t",Tab[i]);
return 0; }

Retour vers la liste d'exercices

******** En C++ ********

#include <iostream> using namespace std; int main(){ int


Tab[10],auxilaire,i,j; for( i=0; i < 10; i++){ cout<<"Entrer un entier:";
cin>>Tab[i]; } for( i=0; i < 9; i++){ for( j=i+1; j < 10; j++){ if ( Tab[j] <
Tab[i]) { auxilaire = Tab[i] ; Tab[i] = Tab[j] ; Tab[j] = auxilaire ; } } }
for( i=0; i < 10; i++) cout<<Tab[i]<<" "; return 0; }

Retour vers la liste d'exercices

******** En JAVA ********

import java.util.Scanner;
class Main {
public static void main(String[] args){
Scanner sc = new Scanner (System.in);
int[] Tab = new int[10];
int auxilaire,i,j;

for( i=0; i < 10; i++){


System.out.print("Entrer un entier :");
Tab[i] = sc.nextInt();
}

for( i=0; i < 9; i++){


for( j=i+1; j < 10; j++){
if ( Tab[j] < Tab[i])
{ auxilaire = Tab[i] ;
Tab[i] = Tab[j] ;
Tab[j] = auxilaire ;
}
}
}
for( i=0; i < 10; i++)
System.out.print(Tab[i]+"\t");
}
}

Retour vers la liste d'exercices

******** En C# ********

using System;
public class Ex29 {
public static void Main(string[] args)
{ int auxilaire,i,j;
int [] Tab = new int[10];
for( i=0; i < 10; i++){
Console.Write("Entrer un entier:");
Tab[i]=int.Parse(System.Console.ReadLine());
}

for( i=0; i < 9; i++){


for( j=i+1; j < 10; j++){
if ( Tab[j] < Tab[i])
{ auxilaire = Tab[i] ;
Tab[i] = Tab[j] ;
Tab[j] = auxilaire ;
}
}
}
for( i=0; i < 10; i++)
Console.Write(Tab[i]+"\t");
}
}
AccueilswitchExo38 (algorithme C C++)
Exo38 (algorithme C C++)

******** En Algorithme ********

Algorithme Variables i,tab[10],Nb_pair, Nb_impair :entiers Debut Nb_pair


← 0 ; Nb_impair ← 0 pour i de 1 à 10 faire Ecrire("donner un entier:")
Lire(tab[i]) FinPour pour i de 1 à 10 faire ( Si( tab[i] mod 2 = 0 ) alors
Nb_pair ← Nb_pair + 1 else Nb_impair ← Nb_impair + 1 FinSi FinPour
Ecrire("Nombre de paires:",Nb_pair) Ecrire("Nombre
d'impaires:",Nb_impair) Fin Résultat ==> 1 4 3 6 6 9 0 9 7 1 Nombre de
paires : 4 Nombre d'impaires: 6

Retour vers la liste d'exercices

******** En C ********

#include<stdio.h> int main(){ int i,tab[10],Nb_pair=0,Nb_impair=0;


for(i=0;i<10;i++){ printf("Donner un entier : "); scanf("%d",&tab[i]); }
for(i=0;i<10;i++){ if( tab[i]%2==0 ) Nb_pair ++; else Nb_impair++ ; }
printf("Nombre de paires:%d\n",Nb_pair); printf("Nombre d'impaires:
%d",Nb_impair); return 0; }

Retour vers la liste d'exercices

******** En C++ ********

#include <iostream> using namespace std; int main(){ int


i,tab[10],Nb_pair=0,Nb_impair=0; for(i=0;i<10;i++){ cout<<"Donner un
entier:"; cin>>tab[i]; } for(i=0;i<10;i++){ if( tab[i]%2==0 ) Nb_pair ++; else
Nb_impair++ ; } cout<<"Nombre de paires:"<<Nb_pair<<endl;
cout<<"Nombre d'impaires:"<<Nb_impair; return 0; }

******** En JAVA ********

import java.util.Scanner;

class Main {

public static void main(String[] args){

int[] tab = new int [10];


int i,Nb_pair=0,Nb_impair=0;

Scanner sc = new Scanner (System.in);

for(i=0;i<10;i++){

System.out.print("Entrer un entier:");

tab[i] = sc.nextInt();

for(i=0;i<10;i++){

if( tab[i]%2==0 ) Nb_pair ++;

else Nb_impair++ ;

System.out.println("les paires: "+Nb_pair);

System.out.print("Les impaires: "+Nb_impair);

Retour vers la liste d'exercices

AccueilswitchExo40 (algorithme C C++)


Exo40 (algorithme C C++)
******** En Algorithme ********

Algorithme Variables i,j,k:entiers T[10],T1[10],T2[10]:tableaux d'entiers


Debut j ← 1 k ← 1 Pour i de 1 à 10 faire Lire(T[i]) FinPour Pour i de 1 à 10
faire Si(T[i] mod 2 = 0)alors T1[j]← T[i] j← j+1 SiNon T2[k] ← T[i] k ←
k+1 FinSi FinPour Pour i de 1 à j faire Ecrire(T1[i]) FinPour Pour i de 1 à
k faire Ecrire(T2[i]) FinPour Fin

Résultat ==> 2 0 9 8 7 8 6 5 4 1 2 0 8 8 6 4 9 7 5 1

Retour vers la liste d'exercices

******** En C ********

#include<stdio.h> int main(){ int i,j=0,k=0,T[10],T1[10],T2[10];


for(i=0;i<10;i++) { printf("Enter un entier:"); scanf("%d",&T[i]); }
for(i=0;i<10;i++) { if(T[i]%2 ==0){ T1[j]= T[i]; j++; }else { T2[k]=T[i]; k++;
} } for(i=0;i<j;i++) printf("%d ",T1[i]); printf("\t"); for(i=0;i<k;i++)
printf("%d ",T2[i]); return 0 ; }

Retour vers la liste d'exercices


******** En C++ ********

#include <iostream> using namespace std; int main(){ int


i,j=0,k=0,T[10],T1[10],T2[10]; for(i=0;i<10;i++) { cout<<"Enter un
entier:"; cin>>T[i]; } for(i=0;i<10;i++) { if(T[i]%2 ==0){ T1[j]= T[i]; j+
+; }else { T2[k]=T[i]; k++; } } for(i=0;i<j;i++) cout<<T1[i]<<" "; printf("\
t"); for(i=0;i<k;i++) cout<<T2[i]<<" "; return 0 ; }

******** En JAVA ********

import java.util.Scanner;
class Main {
public static void main(String[] args){
int [] T = new int [10];
int [] T1 = new int [10];
int [] T2 = new int [10];
int i,j=0,k=0;
Scanner sc = new Scanner (System.in);
for(i=0;i<10;i++) {
System.out.print("Enter un entier:");
T[i]= sc.nextInt();
}

for(i=0;i<10;i++) {
if(T[i]%2 ==0){
T1[j]= T[i]; j++;
}else { T2[k]=T[i]; k++; }
}

for(i=0;i<j;i++)
System.out.print(T1[ i]);

System.out.print("\t");
for(i=0;i<k;i++)
System.out.print(T2[i]);
}
}

Retour vers la liste d'exercices

AccueilPythonExo45 (algorithme C C++)


Exo45 (algorithme C C++)

Ecrire un programme qui permet de tester l'égalité entre deux tableaux


d'entiers (tailles 10). Le programme affiche VRAI si les composants des
deux tableaux sont correspondent position par position, sinon il affiche
FAUX.

******** En Algorithme ********

Algorithme Variables T1[10],T2[10],i,test: entiers Debut test ← 1 pour i de


1 à 10 faire Lire(T1[i]) FinPour pour i de 1 à 10 faire Lire(T2[i]) FinPour
pour i de 1 à 10 faire Si( T1[i] ≠ T2[i]) alors test ← 1 FinSi FinPour Si( test
= 0) alors Ecrire("VRAI") SiNon Ecrire ("FAUX") FinSi Fin Résultat ==>
1 2 7 9 0 3 1 8 4 6 1 2 7 5 0 3 1 8 4 6 FAUX

Retour vers la liste d'exercices

******** En langage C ********


#include <stdio.h> int main () { int T1[10] ,T2[10], i, test=0, M ; for(i=0 ;
i<10 ; i++){ printf("Entrer T1[%d]=",i); scanf ("%d",&T1[i]); } printf("\
n"); for(i=0 ; i<10 ; i++){ printf("Entrer T2[%d]=",i); scanf
("%d",&T2[i]); } for(i=0 ; i<10 ; i++) { if ( T1[i] != T2[i]) test =1 ; } if (test
== 0) printf(" ** VRAI **"); else printf (" ** FAUX **"); return 0 ; }

Retour vers la liste d'exercices

******** En C++ ********

#include <iostream> using namespace std; int main () { int T1[10] ,T2[10], i,
test=0, M ; for(i=0 ; i<10 ; i++){ cout<<"Entrer T1["<<i<<"]="; cin>>T1[i];
} cout<<endl; for(i=0 ; i<10 ; i++){ cout<<"Entrer T2["<<i<<"]=";
cin>>T2[i]; } for(i=0 ; i<10 ; i++) { if ( T1[i] != T2[i]) test =1 ; } if (test == 0)
cout<<" ** VRAI **"; else cout<<" ** FAUX **"; return 0 ; }

Retour vers la liste d'exercices

AccueilPythonExo46 (algorithme C C++)


Exo46 (algorithme C C++)
Écrire un programme qui compte le nombre d'éléments en double ( deux
éléments ou plus ) dans un tableau d'entiers saisie par l'utilisateur.

******** En Algorithme ********

Algorithme Variables test,compteur,i,j: entiers Debut pour i de 1 à 10 faire


Ecrire("Enter un entier:") Lire(tab[i]) FinPour pour i de 1 à 10 faire test ←
0 pour j de 1 à 10 faire Si ( tab[i] = tab[j] )alors test ← test+1 FinSi FinPour
Si (test > 1) alors compteur ← compteur+1 FinSi FinPour Ecrire("Les
elements en double sont:",compteur/2) Fin Résultat ==> 1 6 8 0 6 3 6 0 1 4
Les elements en double sont: 3

Retour vers la liste d'exercices

******** En langage C ********

#include<stdio.h> int main(){ int i,j,tab[10],test,compteur=0;


for(i=0;i<10;i++){ printf("Enter un entier:"); scanf("%d",&tab[i]); }
for(i=0;i<10;i++){ test=0; for(j=0;j<10;j++){ if ( tab[i] == tab[j] ) test++; } if
(test > 1) compteur++ ; } printf("Les elements en double sont
%d",compteur/2) ; return 0; }

Retour vers la liste d'exercices


******** En C++ ********

#include <iostream> using namespace std; int main(){ int


i,j,tab[10],test,compteur=0; for(i=0;i<10;i++){ cout<<"Enter un entier:";
cin>>tab[i]; } for(i=0;i<10;i++){ test=0; for(j=0;j<10;j++){ if ( tab[i] ==
tab[j] ) test++; } if (test > 1) compteur++ ; } cout>>"Les elements en double
sont:"<<compteur/2; return 0; }

Retour vers la liste d'exercices

AccueilPythonExo49 (algorithme C C++)


Exo49 (algorithme C C++)
Écrire un programme permettant de décaler les valeurs nulles vers la fin du
tableau , en gardant l'ordre des éléments.
Exemple 1 2 0 6 9 0 0 8 0 3
Résultat 1 2 6 9 8 3 0 0 0 0

******** En Algorithme ********

Algorithme Variables Tab[10],aide,i,j: Entiers Debut pour i de 1 à 10 faire


Lire(Tab[i]) FinPour pour i de 1 à 10 faire Ecrire(Tab[i]) FinPour pour i de
1 à 9 faire Si(Tab[i]=0)alors j←i+1; TantQue(Tab[j]=0 et j<9)faire j← j+1
FinTantQue aide ← Tab[i] Tab[i]← Tab[j] Tab[j]← aide FinSi FinPour
pour i de 1 à 10 faire Ecrire(Tab[i]) FinPour Fin Résultat ==> 0 9 5 7 0 3 0 1
309573130000

Retour vers la liste d'exercices

******** En langage C ********

#include<stdio.h> #include<conio.h> int main(){ int Tab[10],aide,i,j;


for(i=0;i<10;i++) { printf("Element[%d]=",i); scanf("%d",&Tab[i]); }
for(i=0;i<10;i++) printf("%d ",Tab[i]); for(i=0;i<9;i++) { if(Tab[i]==0)
{ j=i+1; while(Tab[j]==0 && j<9) {j++;} aide = Tab[i]; Tab[i]= Tab[j];
Tab[j]= aide ; } } printf("\n"); for(i=0;i<10;i++) printf("%d ",Tab[i]);
return 0; }

Retour vers la liste d'exercices


******** En C++ ********

#include <iostream> using namespace std; int main(){ int Tab[10],aide,i,j;


for(i=0;i<10;i++) { cout<<"Element["<<i<<"]="; cin>>Tab[i]; }
for(i=0;i<10;i++) cout<<Tab[i]<<" "; for(i=0;i<9;i++) { if(Tab[i]==0)
{ j=i+1; while(Tab[j]==0 && j<9) {j++;} aide = Tab[i]; Tab[i]= Tab[j];
Tab[j]= aide ; } } cout<<endl; for(i=0;i<10;i++) cout<<Tab[i]<<" "; return
0; }

Retour vers la liste d'exercices

< Passage par référence >

Exercice 52

Ecrire un programme C++ qui


1)déclare un entier a
2) déclare une référence vers cet entier ref_a
3) déclare un pointeur vers cet entier p_a
4) affiche les variables, leurs adresses, la valeur pointée.
Corrigé
#include<iostream>

using namespace std;

int main()

int i;

int *p_i; //pointeur

cout<<"Donner un entier : ";

cin>>i;

int &ref_i=i; //Reference

p_i=&i;

cout<<"Le contenu des variables:"<<endl;

cout<<"- variable i : "<<i<<endl;

cout<<"- variable ref_i : "<<ref_i<<endl;

cout<<"- variable p_i : "<<p_i<<endl;

cout<<"Leur adresse: "<<endl;

cout<<"- adresse de i : "<<&i<<endl;

cout<<"- adresse de ref_i : "<<&ref_i<<endl;

cout<<"- adresse de p_i : "<<&p_i<<endl;

cout<<"La valeur pointee : "<<*p_i<<endl;


return 0;

Exercice 53

Écrire une fonction nommée incrementer() permettant d’incrémenter la


valeur d’une variable passée en paramètre et une fonction nommée
permuter() permettant d’échanger les contenus de 2 variables de type int
fournies en argument :

1) En transmettant l’adresse des variables concernées (seule méthode


utilisable en C).

2) En utilisant la transmission par référence.

Corrigé

#include<iostream>

using namespace std;

//Passage par adresse

void permuter(int * x,int * y)

int p;

p = *x;

*x = *y;
*y = p;

void incrementer(int * x)

(*x)++;

//Passage par référence

void incrementer(int & x)

x++;

void permuter(int & x,int & y)

int p;

p = x;

x = y;

y = p;

int main()

int a, b;

cout<<"Donner la valeur de A : ";


cin>>a;

cout<<"Donner la valeur de B : ";

cin>>b;

//Appel par adresse

incrementer(&a);

cout<<"la valeur de A : "<<a<<endl;

permuter(&a,&b);

cout<<"la valeur de A: "<<a<<endl;

cout<<"la valeur de B: "<<b<<endl;

// Appel par référence

cout<<"la valeur de A est: "<<a<<endl;

cout<<"la valeur de B est: "<<b<<endl;

incrementer(a);

cout<<"la valeur de A: "<<a<<endl;


permuter(a,b);

cout<<"la valeur de A: "<<a<<endl;

cout<<"la valeur de B: "<<b<<endl;

return 0;

POO En C++

Exercice 54: Classe Rectangle

Écrire une classe «Rectangle» ayant deux variables « a » et « b » et une


fonction membre « surface() » qui retournera la surface du rectangle.

Corrigé

#include <iostream>
using namespace std;

class Rectangle {

public:
int a,b;
int surface(){
return a*b;
}
};

int main() {
Rectangle rectangle;
cout<<"Entrez la largeur(a) du rectangle :"<<endl;
cin>>rectangle.a;
cout<<"Entrez la longueur(b) du rectangle:"<<endl;
cin>>rectangle.b;

cout<<"Surface : "<< rectangle.surface();


return 0;
}

Exercice 55 : Classe Somme

Écrire une classe « Somme » ayant deux variables « n1 » et « n2 » et une


fonction membre « som() » qui calcule la somme. Dans la méthode
principale main demandez à l’utilisateur d’entrez deux entiers et passez-les
au constructeur par défaut de la classe « Somme » et afficher le résultat de
l’addition des deux nombres.

Corrigé

#include <iostream>
using namespace std;

class Somme{
public:
int n1, n2;

Somme(int nbr1, int nbr2){


n1=nbr1;
n2=nbr2;
}

int som(){
return n1 + n2;
}
};
int main (){
int n1, n2;
cout<<"Entrez le premier nombre :";
cin>>n1;
cout<<"Entrez le deuxième nombre :";
cin>>n2;
Somme obj(n1,n2);
cout<<"Le résultat de l'addition est :"<< obj.som() <<"\n";
return 0;
}

Exercice 56 : Classe Etudiant

Écrire une classe C++ appelée « Etudiant » avec les membres suivant :
nom : (de type char),
note1, note2 : (de type float)
calc_moy() : calcule la note moyenne.
afficher () : affiche le nom et la note moyenne.
Le programme principal (main) demande à l’utilisateur d’entrer le nom et
les notes d'un étudiant. et affiche leur nom et la note moyenne.

Corrigé

#include <iostream>
using namespace std;
class Etudiant {

public:
string nom;
float note1, note2;

Etudiant(string _nom, float _note1, float _note2){


nom = _nom;
note1 = _note1;
note2 = _note2;
}
float calc_moy(){
return (note1 + note2)/2;
}

void afficher (){


cout << "Étudiant: " << nom << " \n moyenne: "<< calc_moy() << endl;
}
};

int main(){
string nom;
int note1, note2;
cout << "Entrez le nom: ";
cin >> nom;
cout << "Entrez la première note: ";
cin >> note1;
cout << "Entrez la deuxième note: ";
cin >> note2;
Etudiant E (nom, note1, note2);
E.afficher();
return 0;
}

Exercice 57 : Classe point

Réaliser une classe point permettant de manipuler un point d'un plan.on


prévoira :

1) un point est définit par ses coordonnées x et y (des membres privés)

2) un constructeur (vous pouvez également implémenter les trois types de


constructeur)

3) une fonction membre déplace effectuant une translation définie par ses
deux arguments dx et dy (double)

4)une fonction membre affiche se contentant d'afficher les coordonnées


cartésiennes du point.

5)une fonction membre saisir se contentant de saisir les coordonnées


cartésiennes du point.

6)une fonction membre distance effectuant calculant la distance entre deux


point.
7)une fonction membre milieu donnant le milieu d'un segment.

on écrira séparément:

8) un ficher source constituant la déclaration et la définition de la classe.

9)un petit programme d'essai (main) gérant la classe point.

Corrigé

#include <iostream>

#include <math.h>

using namespace std;

class point {

double x;

double y;

public:

point();

point(double,double);

point(point &);

~point();

double get_x();

double get_y();

void set_x(double x1);

void set_y(double y1);

point deplace(double dx, double dy);

void affiche();
void saisir();

double distance(point &);

point milieu(point &);

};

point::point(){ }

point::point(double a,double b) { x=a; y=b; }

point::point(point &p) {

set_x(p.get_x());

set_y(p.get_y());

point::~point() {}

double point::get_x() {return x; }

double point::get_y() { return y; }

void point::set_x(double a) { x=a; }

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) {

double p1,x1,x2;

x1=(get_x()-p.get_x())*(get_x()-p.get_x());
x2=(get_y()-p.get_y())*(get_y()-p.get_y());

//p1=sqrt(((get_x()-p.x)*((get_x()-p.x))+((get_y()-p.y)*(get_y()-p.y)));

p1=sqrt(x1+x2);

return p1;

void point::affiche()

cout<<"les coordonnées sont:"<<endl;

cout<<"x="<<get_x()<<endl;

cout<<"y="<<get_y()<<endl;

void point::saisir()

cout<<"donnée les coordonnées:"<<endl;

cout<<"x="<<endl;

cin>>x;

cout<<"y="<<endl;

cin>>y;

point point::milieu(point &p)

point p1;

p1.x=(get_x()+p.get_x())/2;
p1.y=(get_y()+p.get_y())/2;

return p1;

int main()

point p(1,1);

point x(5,5);

point c;

p.affiche();

p.deplace(5,5);

p.affiche();

cout<<"la distance est : "<<p.distance(x)<<endl;

c=p.milieu(x);

c.affiche();

Exercice 58 : Classe Compte

Écrire un programme qui simule la gestion d’un simple compte bancaire.


Le compte est créé avec un solde initial. Il est possible de déposer et de
retirer des fonds, d’ajouter des intérêts et de connaître le solde actuel. Cela
devrait être implémenté dans une classe nommée Account qui comprend:
1) Un constructeur par défaut qui met le solde initial à zéro.
2) Un constructeur qui accepte une balance initial comme paramètre.
3) Une fonction getBalance qui renvoie le solde actuel.
4) Une méthode deposer pour déposer un montant spécifié.
5) Une méthode retirer pour retirer un montant spécifié.
6) Une méthode ajouter_Interet pour ajouter de l’intérêt au compte.
La méthode ajouter_Interet prend le taux d’intérêt comme paramètre et
modifie le solde du compte en solde * (1 + taux d’intérêt).

Corrigé

#include <iostream>

using namespace std;

class Compte {
private:
double balance = 0;
public:
Compte() : balance(0) {}
Compte(double initial_balance) : balance(initial_balance) {}
double getBalance() const { return balance; }
void deposer(double amount) { balance += amount; }
void retirer (double amount) { balance -= amount; }
void ajouter_Interet (double rate) { balance = balance*(1 + rate); }
};

int main() {
Compte compte1;
Compte compte2(3000);
compte1.deposer(100);
compte2.retirer(1000);
compte1.ajouter_Interet (0.3);
cout << compte1.getBalance() << "\n";
cout << compte2.getBalance();
return 0;

}
Exercice 59 : Classe temps
Créer une classe appelée Temps, qui a des membres de type int tels que
heures, minutes et secondes.(rendez-les private)
1) Un constructeur doit initialiser ces données à 0
2) Un autre constructeur devrait l’initialiser à des valeurs fixes.
3) Une fonction membre devrait l’afficher, au format 17h 59min 59s.
4) Une autre fonction pour renvoyer les données de chaque membre
nommez-les getheurs, getMin et getSec
5) Une fonction membre doit ajouter deux objets de type Temps passé en
arguments.

Corrigé

#include <iostream>
using namespace std;

class Temps {
private:
int heures;
int minutes;
int seconds;

public:
Temps() { setTemps(0, 0, 0); }
Temps(int h, int m, int s) { setTemps(h, m, s); }

void setTemps(int h, int m, int s) {


heures = h; minutes = m; seconds = s;
}

void getTemps(void) const {


cout <<heures << "h "<<minutes << "min "
<<seconds <<"s"<< endl;
}

int getHours() const { return heures; }


int getMin() const { return minutes; }
int getSec() const { return seconds; }

void ajouterTemps(Temps t1, Temps t2) {


this->seconds= t1.seconds + t2.seconds;
this->minutes = t1.minutes + t2.minutes + (this->seconds/60);
this->heures = t1.heures + t2.heures + (this->minutes/60);
this->minutes %= 60;
this->seconds %= 60;
}
};

int main() {

Temps t1(4,43, 59), t2(1, 20, 32);


Temps t3;

t1.getTemps();
t2.getTemps();

t3.ajouterTemps(t1, t2);
t3.getTemps();
}

Exercice 60: Classe rectangle

Écrire un programme utilisant une classe rectangle dont le constructeur


prend deux paramètres, largeur et hauteur et qui offre les fonctions
suivantes :

1) calcul du périmètre

2) calcul de la surface

3) affichage

ainsi que les accesseurs et mutateurs triviaux (lecture et modification de la


largeur et de la hauteur).

Corrigé

#include<iostream>

#include <cstdlib>
using namespace std;

class Rectangle {

private:

int largeur;

int hauteur;

public:

Rectangle(int initLargeur,int initHauteur);

~Rectangle();

int getLargeur() const { return largeur; };

int getHauteur() const { return hauteur; };

int perimetre() const { return 2*(largeur+hauteur); };

int surface() const { return largeur * hauteur; };

void setLargeur(int newLargeur) { largeur = newLargeur; };

void setHauteur(int newHauteur) { hauteur = newHauteur; };

void afficher();

};

Rectangle::Rectangle(int initLargeur, int initHauteur)

largeur = initLargeur;

hauteur = initHauteur;

}
Rectangle::~Rectangle(){ }

void Rectangle::afficher() {

for( int i=0; i < hauteur; i++)

for(int j=0; j < largeur; j++)

cout << "*";

cout << endl;

int main()

Rectangle monRectangle(0,0);

char choix = '0';

int value;

while(true)

do
{

cout << " Rectangle - Menu" << endl;

cout << "1 - Modifier largeur du rectangle" << endl;

cout << "2 - Modifier hauteur du rectangle" << endl;

cout << "3 - Calculer les propriétés du rectangle" << endl;

cout << "4 - Afficher le rectangle" << endl;

cout << "5 - Quitter" << endl;

cin >> choix;

}while(choix < '1' || choix > '5');

switch(choix)

case '1':

cout << "Nouvelle largeur : "; cin >> value;

monRectangle.setLargeur(value); break;

case '2':

cout << "Nouvelle hauteur : "; cin >> value;

monRectangle.setHauteur(value); break;

case '3':

cout << "Périmètre : " << monRectangle.perimetre() << endl;

cout << "Surface : " << monRectangle.surface() << endl; break;

case '4':

monRectangle.afficher(); break;

case '5':
exit(0); break;

default:

cout << "Erreur ! Choix invalide." << endl;

exit(1);

return 0;

Exercice 61 : L'héritage

Écrivez un programme qui définit une classe appelée Forme avec un


constructeur qui donne de la valeur à la largeur(x) et à la hauteur(y).
Définir la méthode aire() dans les deux sous-classes Triangle et Rectangle,
qui calculent l’aire. Dans la méthode principale main, définissez deux
variables, un triangle et un rectangle, puis appelez la fonction aire() dans
ces deux variables.
Notez que:

l’aire du triangle est = largeur * hauteur / 2

l’aire du rectangle est = largeur * hauteur.

Corrigé

#include <iostream>
using namespace std;
class Forme {
protected:
float x, y;
public:
Forme(float x, float y)
{
this->x = x;
this->y = y;
}
};

class Rectangle: public Forme


{
public:
Rectangle(float x, float y) : Forme (x, y) {}

float aire()
{
return (x * y);
}
};

class Triangle: public Forme


{
public:
Triangle(float x, float y): Forme (x, y) {}

float aire()
{
return (x * y / 2);
}
};

int main (){


Rectangle rectangle(2,3);
Triangle triangle(2,3);
cout << rectangle.aire() << endl;
cout << triangle.aire() << endl;
return 0;
}

Exercice 62: fonction amie

Écrire une classe «Personne» ayant deux variables « nom » et « âge » sont
privées et un constructeur avec paramètres, Puis écrire une fonction amie
(fonction Friend) à l'extérieur de la classe qui permet d'afficher les
informations d'une personne (nom et l'âge).

Corrigé

#include <iostream>
using namespace std;
class Personne {
private:
string nom;
int age;
public:
Personne (string n,int a)
{ nom=n ; age=a; }
friend void affiche (Personne p);
};

void affiche (Personne p)


{
cout<<"votre nom est: "<<p.nom<<endl;
cout<<"votre âge est:"<<p.age;
}

int main()
{ Personne p("mohamed",32);
affiche(p);
}

Exercice 63: Polymorphisme

1)Écrire une classe Forme ayant une fonction aire ()

2) Écrire la classe triangle qui hérite de la classe Forme et comporte les


attributs

(base et hauteur de type réel) et les méthodes ( constructeur et aire() ).

3) Écrire la classe Cercle qui hérite de la classe Forme et comporte


l'attribut rayon
de type réel et les méthodes ( constructeur et aire() ).

4) Écrire la classe Rectangle qui hérite de la classe Forme et comporte les


attributs

(Longueur et largeur de type réel) et les méthodes ( constructeur et aire() ).

4) Écrire la classe Carre qui hérite de la classe Forme et comporte l'attribut

(côté de type réel) et les méthodes ( constructeur et aire() ).

6) Écrire une fonction main() qui permet de déclarer un tableau des


pointeurs de type Forme puis remplir ce tableau avec les instances de types
(Cercle, Rectangle, Triangle, Carré) et après afficher la surface de chaque
objet.

Corrigé

#include <iostream>

using namespace std;

class Forme{

public:

virtual void aire() {cout<<"Forme"<<endl;}

};

class Triangle : public Forme

{ int base;

int hauteur ;
public:

Triangle (int b,int h){ base=b; hauteur=h;}

void aire() {cout<<"aire de triangle"<<endl;}

};

class Cercle : public Forme

{ int rayon ;

public:

Cercle (int r){ rayon=r;}

void aire() {cout<<"aire de cercle"<<endl;}

};

class Carre : public Forme

{ int cote;

public:

Carre(int c){ cote=c;}

void aire() {cout<<"aire de Carré"<<endl;}

};

class Rectangle : public Forme

{ int longueur;

int largeur;

public:
Rectangle (int l,int L){ longueur=l; largeur=L;}

void aire() {cout<<"aire de rectangle"<<endl;}

};

int main()

Forme * T[4];

T[0]= new Triangle(6,5);

T[1]= new Carre(5);

T[2]= new Cercle(6);

T[3]= new Rectangle(3,4) ;

T[0]->aire();

T[1]->aire();

T[2]->aire();

T[3]->aire();

return 0;

Exercice 64: Classe abstraite


1)Écrire une classe A abstraite ayant 3 méthodes: deux méthodes sont des
fonctions virtuelles purs (afficher1() et afficher2() et la troisième bien
définie s'appelle afficher3().

2) Écrire une classe B qui hérite de la classe A dans cette classe redéfinir les
deux fonctions virtuelles précédentes.

2) Écrire une fonction main() qui permet de déclarer un objet (b) de la


classe B, puis tester les trois méthodes sur cet objet.

Corrigé

#include <iostream>

using namespace std;

// Classe abstraite

class A {

public:

virtual void afficher1()=0; //Fonction virtuelle pure

virtual void afficher2()=0; //Fonction virtuelle pure

void afficher3()

cout << " C'est la méthode afficher3 de la classe mére" << endl;

};
class B : public A

public:

void afficher1()

cout << " C'est la méthode afficher1 de la classe fille" << endl;

void afficher2()

cout << " C'est la méthode afficher2 de la classe fille" << endl;

};

int main()

B b;

b.afficher1();

b.afficher2();

b.afficher3();
return 0;

Exercice 65: Surcharge des opérateurs

L'objectif de cet exercice corrigé en C++ est de définir les opérateurs de


comparaisons et les opérateurs arithmétiques d'une classe Fraction en
utilisant les fonctions membres et les fonctions amies
1) Créer la classe Fraction possédant deux données membres
« numérateur » et « dénominateur » qui correspondent respectivement au
numérateur et au dénominateur de la fraction
2) Définir un constructeur d'initialisation
3) Définir une fonction membre afficher()
4) Définir les opérateurs arithmétiques (+, - , * et /) entre deux fractions
5) Définir les opérateurs arithmétiques (+, - , * et /) entre une fraction et un
nombre
6) Définir les opérateurs de comparaison (==, !=, <, >, <=, >=) sur deux
fractions
7) Créer un programme de test
Corrigé

#include <iostream>

using namespace std;

class fraction {

int num;
int den;

public:

fraction(int a = 1, int b = 1)

num = a;

den = b;

void afficher()

cout << num << "/" << den << endl;

fraction inverse()

fraction r;

r.num = den;

r.den = num;

return r;

}
fraction operator+(fraction f)

fraction s;

s.num = num * f.den + den * f.num;

s.den = den * f.den;

return s;

fraction operator-(fraction f)

fraction s;

s.num = num * f.den - den * f.num;

s.den = den * f.den;

return s;

fraction operator*(fraction f)

fraction s;

s.num = num * f.num;

s.den = den * f.den;

return s;
}

fraction operator/(fraction f)

return *this * (f.inverse());

fraction operator+(int x)

fraction r(x, 1);

return *this + r;

/* Ou

fraction s;

s.num = num + den * x;

s.den = den;

return s;

*/

fraction operator-(int x)
{

fraction r(x, 1);

return *this - r;

fraction operator*(int x)

fraction r(x, 1);

return *this * r;

fraction operator/(int x)

fraction r(x, 1);

return *this / r;

friend fraction operator+(int, fraction);

friend fraction operator-(int, fraction);

friend fraction operator*(int, fraction);

friend fraction operator/(int, fraction);


bool operator>(fraction f)

return (num * f.den > den * f.num);

bool operator>=(fraction f)

return (num * f.den >= den * f.num);

bool operator==(fraction f)

return (num * f.den == den * f.num);

bool operator<(fraction f)

return !(*this >= f);

bool operator<=(fraction f)
{

return !(*this > f);

bool operator!=(fraction f)

return !(*this == f);

};

fraction operator+(int x, fraction f)

return f + x;

fraction operator-(int x, fraction f)

return f - x;

fraction operator*(int x, fraction f)

return f * x;

}
fraction operator/(int x, fraction f)

return f / x;

int main()

fraction f1(1, 2), f2(2, 3);

cout << "Fraction F1 : ";

f1.afficher();

cout << "Fraction F2 : ";

f2.afficher();

cout << "F1 + F2 = ";

(f1 + f2).afficher();

cout << "F1 - F2 = ";

(f1 - f2).afficher();

cout << "F1 * F2 = ";

(f1 * f2).afficher();
cout << "F1 / F2 = ";

(f1 / f2).afficher();

cout << "F1 + 5 = ";

(f1 + 5).afficher();

cout << "3 * F2 = ";

(3 * f2).afficher();

if (f1 == f2)

cout << "Les deux fractions sont egales" << endl;

else

cout << "Les deux fractions ne sont pas egales" << endl;

if (f1 > f2){

cout << "La fraction la plus grande est : ";

f1.afficher();

else if(f1 < f2){

cout << "La fraction la plus grande est : ";

f2.afficher();

/*

cout << "La fraction la plus petite: ";


if (f1 < f2)

f1.afficher();

else if(f1 > f2)

f2.afficher();

if (f1 != f2)

cout << "les deux fractions ne sont pas egales" << endl;

else

cout << "Les deux fractions sont egales" << endl;

*/

Vous aimerez peut-être aussi