Travaux pratiques 4
ALGORITHME ET PROGRAMMATION
Réalisée par : DOUAE BOURAKADI
Prof : Houssam Amiry
Exercice 1 :
a) *P + 2
o *P donne la valeur à laquelle pointe P et soit A[0] = 12.
o *P + 2 = 12 + 2 = 14.
Résultat : 14.
b) *(P + 2)
o P + 2 donne l'adresse du troisième élément de A (car les indices commencent à 0).
o *(P + 2) donne la valeur à cette adresse, soit A[2] = 34.
Résultat : 34.
c) &P + 1
o &P est l'adresse du pointeur P (et non du tableau).
o &P + 1 donne l'adresse suivant celle de P (en mémoire, cela dépend de la taille d'un
pointeur).
Résultat : Une adresse mémoire, dépendante de l'implémentation.
d) &A[4] - 3
o &A[4] est l'adresse du cinquième élément du tableau (A[4] = 56).
o &A[4] - 3 recule de 3 emplacements (éléments) à partir de &A[4], soit l'adresse de
A[1].
Résultat : Adresse de A[1].
e) A + 3
o A est un pointeur vers le premier élément du tableau (A == &A[0]).
o A + 3 donne l'adresse du quatrième élément du tableau (A[3] = 45).
o Résultat : Adresse de A[3].
f) &A[7] - P
o &A[7] est l'adresse du huitième élément du tableau (A[7] = 89).
o P est l'adresse du premier élément (A[0]).
o &A[7] - P donne le nombre d'éléments entre &A[7] et P, soit 7.
Résultat : 7.
g) P + (*P - 10)
o *P donne la valeur du premier élément du tableau (*P = A[0] = 12).
o *P - 10 = 12 - 10 = 2.
o P + 2 donne l'adresse du troisième élément du tableau (A[2] = 34).
Résultat : Adresse de A[2].
h) *(P + *(P + 8) - A[7])
o *(P + 8) donne la valeur du neuvième élément du tableau (A[8] = 90).
o A[7] est la valeur du huitième élément du tableau (A[7] = 89).
o *(P + 8) - A[7] = 90 - 89 = 1.
o P + 1 donne l'adresse du deuxième élément du tableau (A[1] = 23).
o *(P + 1) donne la valeur à cette adresse, soit A[1] = 23.
Résultat : 23.
Exercice 2 : Pointeurs et tableaux
#include <stdio.h>
int main()
void (int *A, int *size, int X) {
int *P1 = A;
int *P2 = A int *end = A + *size
while (P1 < end) {
if (*P1 != X) {
*P2 = *P1
P2++ ;
P1++ ;
*size = P2 – A ;
int main() {
int A[MAX_SIZE];
int n, X ;
// Lecture de la taille du tableau
printf("Entrez le nombre d'éléments dans le tableau: ");
scanf("%d", &n);
if (n <= 0 || n > MAX_SIZE) {
printf("Taille invalide.\n");
return 1;
// Lecture des éléments du tableau
printf("Entrez les éléments du tableau:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &A[i]);
// Lecture de l'entier X à supprimer
printf("Entrez la valeur à supprimer: ");
scanf("%d", &X);
// Affichage du tableau modifié
printf("Tableau après suppression de %d:\n", X);
for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
printf("\n");
return 0;
Exercice 3 : Pointeurs et tableaux
#include <stdio.h>
int main()
int *A, int size
int *P1 = A;
int *P2 = A + size - 1;
int AIDE;
while (P1 < P2) {
AIDE = *P1 ;
*P1 = *P2;
*P2 = AIDE;
P1++;
P2--;
int main() {
int A[MAX_SIZE];
int n;
printf("Entrez le nombre d'éléments dans le tableau: ");
scanf("%d", &n);
if (n <= 0 || n > MAX_SIZE)
printf("Taille invalide.\n");
printf("Entrez les éléments du tableau:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &A[i]);
printf("Tableau après inversion:\n");
for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
printf("\n");
return 0;
Exercice 4 : Fonctions max\min
1)Algorithme pour min :
Fonction min(a, b)
Si a < b Alors
Retourner a
Sinon
Retourner b
Fin Si
Fin Fonction
Algorithme pour max :
Fonction max(a, b)
Si a > b Alors
Retourner a
Sinon
Retourner b
Fin Si
Fin Fonction
2) Traduction en programme C
#include <stdio.h>
// Fonction min
int min(int a, int b) {
return (a < b) ? a : b;
}
// Fonction max
int max(int a, int b) {
return (a > b) ? a : b;
}
int main() {
int a, b;
printf("Entrez deux entiers : ");
scanf("%d %d", &a, &b);
printf("Le minimum est : %d\n", min(a, b));
printf("Le maximum est : %d\n", max(a, b));
return 0;
}
3) Algorithme pour calculer le minimum et maximum de 4 entiers
Algorithme :
Fonction calculer_minimum_maximum(a, b, c, d)
min1 ← min(a, b)
min2 ← min(c, d)
minimum ← min(min1, min2)
max1 ← max(a, b)
max2 ← max(c, d)
maximum ← max(max1, max2)
Afficher "Le minimum est : ", minimum
Afficher "Le maximum est : ", maximum
Fin Fonction
4) en langage C :
#include <stdio.h>
// Fonction min
int min(int a, int b) {
return (a < b) ? a : b;
}
// Fonction max
int max(int a, int b) {
return (a > b) ? a : b;
}
// Fonction pour calculer le minimum et maximum de 4 entiers
void calculer_minimum_maximum(int a, int b, int c, int d) {
int min1 = min(a, b);
int min2 = min(c, d);
int minimum = min(min1, min2);
int max1 = max(a, b);
int max2 = max(c, d);
int maximum = max(max1, max2);
printf("Le minimum est : %d\n", minimum);
printf("Le maximum est : %d\n", maximum);
printf("Entrez quatre entiers : ");
scanf("%d %d %d %d", &a, &b, &c, &d);
calculer_minimum_maximum(a, b, c, d);
return 0;
}
Exercice 5 :
1) Écrire une fonction factorielle (algorithme)
Algorithme :
Fonction factorielle(n)
Si n = 0 Alors
Retourner 1
Sinon
Retourner n * factorielle(n - 1)
Fin Si
Fin Fonction
2) Traduction en langage C :
#include <stdio.h>
int factorielle(int n) {
if (n == 0) {
return 1; // Par définition, 0! = 1
} else
return n * factorielle(n - 1);
}
int main() {
int n;
printf("Entrez un entier pour calculer sa factorielle : ");
scanf("%d", &n);
if (n < 0) {
printf("La factorielle n'est pas définie pour les nombres négatifs.\n");
} else
printf("La factorielle de %d est : %d\n", n, factorielle(n));
}
return 0;
}
Exercice 6 :
1) Algorithme pour SomProd :
Fonction SomProd(tableau, n)
somme ← 0
produit ← 1
Pour i de 0 à n - 1 Faire
somme ← somme + tableau[i]
produit ← produit * tableau[i]
Fin Pour
Retourner (somme, produit)
Fin Fonction
Algorithme :
Lire n
Déclarer tableau[n]
Pour i de 0 à n - 1 Faire
Lire tableau[i]
Fin Pour
(somme, produit) ← SomProd(tableau, n)
Afficher "La somme est :", somme
Afficher "Le produit est :", produit
Fin Algorithme
2) Traduction en langage C :
#include <stdio.h>
// Fonction SomProd : calcule la somme et le produit d'un tableau
void SomProd(int tableau[], int n, int *somme, int *produit) {
*somme = 0;
*produit = 1;
for (int i = 0; i < n; i++) {
*somme += tableau[i];
*produit *= tableau[i]
int main() {
int n;
printf("Entrez le nombre d'entiers dans le tableau : ");
scanf("%d", &n);
if (n <= 0) {
printf("La taille du tableau doit être positive.\n");
return 1;
int tableau[n]; // Déclaration du tableau
// Remplissage du tableau
printf("Entrez %d entiers :\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &tableau[i]);
int somme, produit;
// Appel de la fonction SomProd
SomProd(tableau, n, &somme, &produit);
// Affichage des résultats
printf("La somme des éléments est : %d\n", somme);
printf("Le produit des éléments est : %d\n", produit);
return 0;