Sommaire
Semestre 1
ALGORITHMIQUE
PROGRAMMATION
Semestre 2
EXAMENS
3
Affectation et affichage
Exercice 1
Soit l’équation ax+b=0.
Ecrire un algorithme permettant de :
déclarer et saisir les coefficients a et b (réels)
afficher l’équation à saisir
afficher la solution
Exercice 2
Écrire un Algorithme qui calcule et affiche la surface de 2 cercles, l’un de rayon R1 et l’autre de
rayon R2, ainsi que la différence entre les deux surfaces. (S= πR2)
Traitement Conditionnel
Exercice 2
Réalisez un algorithme qui demande à l’utilisateur de saisir deux entiers x et y et indique si l’un est
multiple de l’autre.
Exercice 3
Écrivez un algorithme qui saisit 3 variables de types réels et les affiches dans l’ordre croissant.
Exercice 4
Écrivez un algorithme qui réalise la saisie d’une variable entière positive. En utilisant les
instructions suivant faire, affichez en lettres la valeur correspondant à ma variable (« un » pour 1,
« deux » pour 2, etc). Si la variable est supérieure à 10, affichez « autre valeur ».
Traitement répétitif
Exercice 6
La suite de Fibonacci est une suite d’entiers ou chaque terme est défini comme la somme des deux
termes précédents. Les deux premiers éléments sont 0 et 1.
Ecrivez un algorithme permettant de calculer et d’afficher les N premiers termes de la suite de
Fibonacci, N étant fixé par l’utilisateur.
Exercice 7
4
Écrivez un algorithme qui dessine un carré, sur l’écran, comportant T lignes et T colonnes, T étant
donné par l’utilisateur.
Le carré peut être dessiné avec des étoiles par exemple.
Exercice 8
Faites la même chose (exercice 7) pour un rectangle de L lignes et C colonnes, L et C étant donnés
par l’utilisateur.
Tableaux
Exercice 9
Ecrire un algorithme qui calcule le produit scalaire de deux vecteurs (représentés comme des
tableaux).
Exercice 10
Soient deux tableaux d’entiers. Écrire l’algorithme d’une fonction qui permet de tester l’égalité
entre les tableaux : il rend VRAI si les composants des deux tableaux correspondent position par
position, et FAUX sinon.
Exercice 11
Ecrire un algorithme qui recherche et affiche le nombre d’occurrences d’un entier (saisie par
l’utilisateur) dans un tableau d’entiers (également saisi par l’utilisateur).
Exercice 12
Ecrire un algorithme qui inverse l’ordre d’apparition des nombres présents dans un tableau d’entiers.
Exercice 13
Ecrire un algorithme qui calcule la somme des valeurs de la diagonale principale d’une matrice de
réels carrée de taille n x n.
Exercice 14
Ecrire un algorithme qui calcule la somme des valeurs de la diagonale secondaire d’une matrice de
réels carrée de taille n x n.
Exercice 15
Ecrire un algorithme qui recherche la valeur maximale d’une matrice de réels de taille n x m.
Fonctions
5
Exercice 16
Ecrivez une procédure count prenant en entrée un entier N, qui affiche les entiers de 1 jusqu’à N.
Exercice 18
Faire de même avec une procédure countDown, affichant toutes les valeurs de N à 1.
Exercice 5
Ecrivez un algorithme qui indique si un nombre N entré par l’utilisateur est premier ou non. Pour
cela, on essayera de diviser cet entier par tous les entiers inférieurs à N (en fait, on peut se limiter à
tester tous les entiers inférieurs à racine de N, sqrt).
PROGRAMMATION
6
TP 1 : Affectation et affichage : (Scanf ( ) et Printf ( ))
Exercice 1 :
Ecrire un programme C qui permet de convertir les degrés en radians.
NB : On prendra : 1°=0,0174rad
Exercice 2 :
Ecrire un programme C qui calcul la surface et la circonférence d’un cercle de rayon R.
Exercice 3 :
Ecrire un programme C qui exprime un nombre n de secondes sous forme d’heures, minutes,
secondes.
7
« Pupille » de 8 à 9 ans
« Minime » de 10 à 11 ans
« Cadet » de 12 à 15 ans.
Sinon il affiche le message ‘catégorie incorrecte’.
Exercice 2 :
Etant donnés deux nombres n entier et x réel. Ecrire le programme C qui calcul xn par
multiplications successives. Utiliser l'instruction for.
Exercice 1 :
Ecrire un programme C qui calcule puis affiche la somme de tous les multiples de 5 inférieurs à 100.
Utiliser l'instruction While.
Exercice 2 :
Un nombre entier est dit parfait s’il est égal à la somme de tous ses diviseurs, excepté lui-même
(exemple 6 = 1 + 2 + 3). Ecrire un programme qui détermine si un nombre entier n est parfait ou
non. Utiliser l'instruction While.
Exercice 3 :
Un nombre entier x est un carré parfait s’il existe un entier y tel que y*y = x. Ecrire un programme
C qui détermine si un nombre entier est un carré parfait ou non. Utiliser l'instruction While.
Exercice 1 :
Ecrire un programme C qui étant un nombre entier, vérifié s'il est premier ou non. [Un nombre
entier est dit premier s'il n'est divisible que par lui-même et par 1.]
Utiliser l'instruction do…while.
Exercice 2 :
8
Ecrire un programme C qui lit N nombres entiers, tel que le dernier est égal à 0. Ce programme doit
calculer puis affiché :
Le nombre total des entiers qui ont été lus.
La somme de ces nombres entiers.
La plus grande valeur lue.
Le nombre de valeur multiple de 3.
Utiliser l'instruction do…While.
Exercice 3 :
Ecrire un programme qui permet de calculer sin(x) à l’aide de la série entière suivante :
Exercice 4 :
Ecrire un programme C qui permet d’évaluer la série Sn suivante pour n donné :
9
2. Modifier l’algorithme afin de saisir un tableau tabCoef contenant les coefficients respectifs des 9
modules. Ensuite donner la nouvelle moyenne en tenant compte de ces coefficients.
Exercice 2 :
Soit une liste de N nombres entiers contenus dans un tableau. Ecrire l'algorithme qui détermine le
plus petit parmi ces nombres et la moyenne.
Exercice 3 :
Ecrire un algorithme qui permet d’inverser les éléments d’un tableau.
Exercice 4 :
On se propose de vérifier si une valeur VAL donnée est un élément d'un tableau T de nombres
entiers.
Écrire un algorithme de recherche séquentielle de VAL dans T (Afficher l’index de VAL dans T).
Supposons que le tableau initial T soit trié par ordre croissant. Utiliserez une approche
dichotomique pour la recherche de VAL dans T (Comparez les deux algorithmes !!!!)
Exercice 5 :
Soit VECT un tableau d'entiers.
1. Ecrire un algorithme qui insère, dans ce tableau une valeur VAL à la kième position V2, triés dans
l'ordre croissant :
2. Ecrire un algorithme qui fusionne ces deux vecteurs en un vecteur V3 trié dans le même ordre.
3. Modifier l’algorithme afin de supprimer les doublons éventuels.
Exercice 2
Donnez l’algorithme qui calcul le produit de deux Matrices C = A x B
Exercice 3
Ecrire un algorithme qui calcul et affiche la somme de deux matrices A et B.
10
Exercice 4
Ecrire un algorithme qui calcul la somme des éléments de la première et la deuxième diagonale
d’une matrice carrée A.
Exercices Supplémentaires (A traiter en séances de TD)
Remarque : Un bonus sera donné a toute réponse qui n'utilise ni tableau ni matrice supplémentaires.
Indications : dans l'exemple précèdent :
• les éléments (3, 10, 12) ne forment pas une diagonale mais une anti-diagonale.
• Le résultat doit être le même si (k,l) =(1,2) ou (k,l) =(3,4).
11
• les éléments (8, 1, 9) forment une diagonale (c'est la principale) mais qui ne passe pas par
(k,l)=(2,3).
• L'élément 3 (coin supérieur droit) est a lui seul une diagonale (qui évidemment ne passe pas par
(2,3))
CORRECTION
12
Affectation et affichage
Exercice 1
Algorithme Equation
a : réel
b : réel
Début
Lire (clavier, a, b)
Ecrire (écran, a, ‘x+’, b,’=0’)
Si a‡0 Alors
Ecrire (écran, ‘x=’, -b/a)
Sinon
Ecrire (écran, ‘Pas de solution’)
FinSi
FinAlgorithme
Exercice 2
Algorithme_SurfaceDuCercle
13
R1 : réel
R2 : réel
S1 : réel
S2 : réel
Début
Ecrire (écran, ‘Entrez le rayon R1 du cercle 1’)
Lire (clavier, R1)
S1 ← 3,14*R1*R1
Ecrire (écran, ‘La surface du cercle 1 est’, S1)
Ecrire (écran, ‘Entrez le rayon R2 du cercle 2’)
Lire (clavier, R2)
Ecrire (écran, ‘La surface du cercle 2 est’, S2)
S1 ← 3,14*R2*R2
Ecrire (écran, ‘La différence entre les deux surfaces est’, S1 – S2)
Traitement Conditionnel
Exercice 2
Algorithme_Multiple
x, y : entiers
Début
Ecrire (écran, ‘Entrez les valeurs de x et y’)
Lire (clavier, x, y)
Si x MOD y =0 Alors
Ecrire (écran, ‘y est multiple de x’)
Sinon
Si y MOD x = 0 Alors
Ecrire (écran, ‘x est multiple de y’)
Sinon
Ecrire (écran, ‘Aucun des deux entiers n’est multiple de l’autre’)
FinSi
FinSi
FinAlgorithme
Exercice 3
Algorithme_OrdreCroissant
x, y, z : réels
Début
Ecrire (écran, ‘Entrez les valeurs de x, y et z’)
14
Lire (clavier, x, y, z)
Si x≤y ET y≤z Alors
Ecrire (écran, ‘x, y, z’)
FinSi
Si x≤z ET z≤y Alors
Ecrire (écran, ‘x, z, y’)
FinSi
Si y≤x ET x≤z Alors
Ecrire (écran, ‘y, x, z’)
FinSi
Si y≤z ET z≤x Alors
Ecrire (écran, ‘y, z, x’)
FinSi
Si z≤x ET x≤y Alors
Ecrire (écran, ‘z, x, y’)
FinSi
Si z≤y ET y≤x Alors
Ecrire (écran, ‘z, y, x’)
FinSi
FinAlgorithme
Exercice 4
Algorithme_chiffre_en_lettre
Val : entier
Début
𝑉𝑎𝑙 ← −1
TantQue (𝑉𝑎𝑙 ≤ 0)
Ecrire (écran, ‘Entrez une valeur entière positive’)
Lire (clavier, Val)
FinTantQue
Suivant Val Faire
1 : Ecrire (écran, ‘un’)
2 : Ecrire (écran, ‘deux’)
3 : Ecrire (écran, ‘trois’)
4 : Ecrire (écran, ‘quatre’)
15
5 : Ecrire (écran, ‘cinq’)
6 : Ecrire (écran, ‘six’)
7 : Ecrire (écran, ‘sept)
8 : Ecrire (écran, ‘huit)
9 : Ecrire (écran, ‘neuf)
10 : Ecrire (écran, ‘dix)
Autrement : Ecrire (écran, ‘Autre valeur’)
FinAlgorithme
Traitement répétitif
Exercice 6
Algorithme_SuiteDeFibonacci
U0, U1, i, N, Somme: entiers
Début
Ecrire (écran, ‘Entrez la valeur de N’)
Lire (clavier, N)
𝑈0 ← 0
𝑈1 ← 1
Si ( 𝑁 > 0) Alors
Ecrire (écran, ‘Les’, N, ‘premiers termes de la suite de Fibonacci sont :’)
Si ( 𝑁 = 1) Alors
Ecrire (écran, ‘\n’, U0)
FinSi
Si ( 𝑁 = 2) Alors
Ecrire (écran, ‘\n’, U0, ‘\n’, U1)
FinSi
Si (𝑁 > 2) Alors
Pour i de 1 à N-2 par pas de 1 Faire
𝑆𝑜𝑚𝑚𝑒 ← 𝑈0 + 𝑈1
Ecrire (écran, ‘\n’, Somme)
𝑈0 ← 𝑈1
𝑈1 ← 𝑆𝑜𝑚𝑚𝑒
FinPour
16
FinSi
FinPour
FinAlgorithme
Exercice 7
Algorithme_CarreEtoiles
T, i, j : entiers
Début
Ecrire (écran, ‘Entrez le nombre de lignes’)
Lire (clavier, T)
Pour i de 1 à T par pas de 1 Faire
Pour j de 1 à T par pas de 1 Faire
Ecrire (écran, ‘*’)
FinPour
Ecrire (écran, ‘\n’)
FinPour
FinAlgorithme
Exercice 8
Algorithme_RectangleEtoiles
L, C, i, j : entiers
Début
Ecrire (écran, ‘Entrez le nombre de lignes et de colonnes’)
Lire (clavier, L, C)
Pour i de 1 à L par pas de 1 Faire
Pour j de 1 à C par pas de 1 Faire
Ecrire (écran, ‘*’)
FinPour
Ecrire (écran, ‘\n’)
FinPour
FinAlgorithme
Tableaux
Exercice 9
17
Algorithme_produitScalaire
U : Tableau (1…2) de type entier
V : Tableau (1…2) de type entier
Ps, i : Entier
Début
Pour i de 1 à 2 par pas de 1 Faire
Ecrire (écran, ‘Entrez les coordonnées du vecteur U’)
Lire (clavier, U(i))
FinPour
Pour i de 1 à 2 par pas de 1 Faire
Ecrire (écran, ‘Entrez les coordonnées du vecteur V’)
Lire (clavier, V(i))
FinPour
𝑃𝑠 ← 𝑈(1) ∗ 𝑉 (1) + 𝑈 (2) ∗ 𝑉(2)
Ecrire (écran, ‘Le produit scalaire est %d’, Ps)
FinAlgorithme
Exercice 10
Algorithme_tableauxEgaux
Tab1 : Tableau (1…100) de type entier
Tab2 : Tableau (1…100) de type entier
Ps, i : Entier
Bool : Booléen
Début
Ecrire (écran, ‘Remplissage du premier tableau\n’)
Pour i de 1 à 100 par pas de 1 Faire
Ecrire (écran, ‘Entrez un entier’)
Lire (clavier, Tab1(i))
Ecrire (écran, ‘\n)
FinPour
Ecrire (écran, ‘Remplissage du deuxième tableau\n’)
Pour i de 1 à 100 par pas de 1 Faire
Ecrire (écran, ‘Entrez un entier’)
Lire (clavier, Tab2(i))
Ecrire (écran, ‘\n)
FinPour
Bool ← VRAI
Pour i de 1 à 100 par pas de 1 Faire
Si (Tab1(i) ≠ Tab2(i))
Bool ← FAUX
FinSi
FinPour
Si (Bool = VRAI)
Ecrire (écran, ‘VRAI’)
Sinon
18
Ecrire (écran, ‘FAUX’)
FinSi
FinAlgorithme
Exercice 11
Algorithme_occurrence_dans_un_tableau
Tab : Tableau (1…20) de type entier
Val, i, temp : Entier
Début
Pour i de 1 à 20 par pas de 1 Faire
Ecrire (écran, ‘Entrez un entier’)
Lire (clavier, Tab(i))
FinPour
Ecrire (écran, ‘Entrez l’entier dont on doit cherchez le nombre d’occurrences’)
Lire (clavier, Val)
𝑡𝑒𝑚𝑝 ← 0
Pour i de 1 à 20 par pas de 1 Faire
Si (Tab(i)=Val)
𝑡𝑒𝑚𝑝 = 𝑡𝑒𝑚𝑝 + 1
FinSi
FinPour
Ecrire (écran, ‘Le nombre d’occurrences de %d est %d’, Val, temp)
FinAlgorithme
PROGRAMMATION
19
printf("\n \n%f ° est égal à %f rad") ;
return 0 ;
}
Exercice 2
#include <stdio.h>
int main(){
float R, S, C;
printf ("Calcul de Surface et de circonférence\n");
printf("Entrez Le Rayon du Cercle:\n");
scanf("%f", &R);
C=2*3,14*R;
S=3,14*R*R;
printf("\n \nLa Surface d’un cercle de rayon R=%f est égal à %f. Sa circonférence vaut :%f",
R, S, C);
return 0;
}
Exercice 3
#include <stdio.h>
int main(){
int s, mn, h;
printf ("Conversion du temps en h, mn et s\n");
printf("Entrez Le nombre de secondes: ");
scanf("%d", &s);
printf("%d secondes vaut:");
h=s/3600;
mn=(s%3600)/60;
s=(s%3600)%60;
printf("%d heure(s) %d minute(s) et %d seconde(s)", h, mn, s);
return 0;
}
20
TP2 : Traitement Conditionnel : (if…else)
Exercice 1
#include <stdio.h>
int main(){
int Val;
printf ("Négatif ou Positif\n\n");
printf("Entrez Le nombre relatif: ");
scanf ("%d", &Val);
if (Val>=0)
{
printf ("%d est positif\n\n", Val);
}
else
{
printf ("%d est négatif\n\n", Val);
}
printf ("Merci d’avoir utiliser notre programme !");
return 0;
}
Exercice 2
#include <stdio.h>
int main(){
int A, B, C;
printf ("Qui est la Somme des deux autres");
printf("Entrez A, B et C.\n");
printf("A=");
scanf ("%d", &A);
printf("B=");
scanf ("%d", &B);
printf("C=");
scanf ("%d", &C);
if (A==B+C)
{
printf ("%d est la somme de %d et %d\n\n", A, B, C);
21
}
if (B==A+C)
{
printf ("%d est la somme de %d et %d\n\n", B, A, C);
}
if (C==A+B)
{
printf ("%d est la somme de %d et %d\n\n", C, A, B);
}
else
{
printf ("Aucun des nombres entrés n’est la somme des deux autres\n\n");
}
printf ("Merci d’avoir utiliser notre programme !");
return 0;
}
Exercice 3
#include <stdio.h>
#include <math.h>
int main(){
int A, B, C, delta;
printf ("Résolution d’équation du second degré du type Ax2 + Bx + C = 0\n\n");
printf("Entrez A, B et C :");
scanf ("%d %d %d", &A, &B, &C);
printf("L’équation à résoudre est: %dx2 + %dx + %d = 0", A, B, C);
delta = B*B– 4*A*C;
if (delta==0)
{
printf ("La solution est x = %d ", (-B/2A));
}
if (delta>0)
{
printf ("La solution est x = %d ", (-B-sqrt(delta))/2*A);
}
22
else
{
printf ("%d est négatif\n\n", Val);
}
printf ("Merci d’avoir utiliser notre programme !");
return 0;
}
Exercice 4
#include <stdio.h>
int main(){
int A, B, C;
printf ("Trie par ordre croissant \n\n");
printf("Entrez A, B et C.\n");
printf("A=");
scanf ("%d", &A);
printf("B=");
scanf ("%d", &B);
printf("C=");
scanf ("%d", &C);
if (A<=B && B<=C)
{
printf ("%d ≤ %d ≤ %d\n\n", A, B, C);
}
if (A<=C && C<=B)
{
printf ("%d ≤ %d ≤ %d\n\n", A, C, B);
}
if (B<=A && A<=C)
{
printf ("%d ≤ %d ≤ %d\n\n", B, A, C);
}
if (B<=C && C<=A)
{
printf ("%d ≤ %d ≤ %d\n\n", B, C, A);
23
}
if (C<=A && A<=B)
{
printf ("%d ≤ %d ≤ %d\n\n", C, A, B);
}
if (C<=B && B<=A)
{
printf ("%d ≤ %d ≤ %d\n\n", C, B, A);
}
printf ("Merci d’avoir utiliser notre programme !");
return 0;
}
Exercice 2
#include <stdio.h>
int main()
{
int age;
printf ("Catégorie selon l’âge\n\n");
printf ("Donnez l’âge: \n");
scanf ("%d", &age);
switch (age)
{
case 6 ... 7: printf ("Poussin\n");
break;
case 8 ... 9: printf ("Pupille \n ");
break;
case 10 ... 11: printf ("Minime\n");
break;
case 12 ... 15: printf ("Cadet \n");
break;
default : printf ("Catégorie incorrecte \n\n");
}
printf ("Merci d’avoir utiliser notre programme !");
return 0;
}
Examens
EXERCICE 02 : (5 PTS)
Un entier naturel de trois chiffres est dit cubique s'il est égal à la somme des cubes de ses chiffres,
Exemple : 153 est cubique car 153 = 13+ 53+ 33.
Ecrire un Programme C qui permet de vérifier si un nombre x entré au clavier est cubique
EXERCICE 03 : (5 PTS)
26
Ecrire un Algorithme qui affiche les termes ≤1000 de la suite numérique définie comme suit :
EXERCICE 04 : (3 PTS)
Ecrire un Programme C qui permet de lire un nombre impair n, et qui calcule et affiche les
sommes S et M suivantes :
Exercice 03
27
Algorithme_SuiteNum
U0, U1 : entiers
Bool : Booléen
Début
𝑈0 ← 2
𝐵𝑜𝑜𝑙 ← 𝑉𝑅𝐴𝐼
Ecrire (écran, ‘Les termes ≤ 1000 sont’, U0)
𝑈1 ← 2𝑈0
TantQue (𝑈1 ≤ 1000) Faire
Si (𝐵𝑜𝑜𝑙 = 𝑉𝑅𝐴𝐼)
𝑈1 ← 2𝑈0
𝑈0 ← 𝑈1
Ecrire (écran, ‘’, U1)
𝐵𝑜𝑜𝑙 ← 𝐹𝐴𝑈𝑋
Sinon
𝑈1 ← 3𝑈0
𝑈0 ← 𝑈1
Ecrire (écran, ‘’, U1)
𝐵𝑜𝑜𝑙 ← 𝑉𝑅𝐴𝐼
FinSi
FinTantQue
FinAlgorithme
28