0% ont trouvé ce document utile (0 vote)
43 vues11 pages

Pointeurs et Tableaux en C : Exercices

Le document présente plusieurs exercices sur l'algorithmique et la programmation en C, incluant des manipulations de pointeurs et de tableaux. Il couvre des concepts tels que la suppression d'éléments, l'inversion de tableaux, ainsi que des fonctions pour calculer les minimums et maximums. Enfin, il aborde la factorielle et le calcul de la somme et du produit d'un tableau d'entiers.

Transféré par

bourakadi.d604
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)
43 vues11 pages

Pointeurs et Tableaux en C : Exercices

Le document présente plusieurs exercices sur l'algorithmique et la programmation en C, incluant des manipulations de pointeurs et de tableaux. Il couvre des concepts tels que la suppression d'éléments, l'inversion de tableaux, ainsi que des fonctions pour calculer les minimums et maximums. Enfin, il aborde la factorielle et le calcul de la somme et du produit d'un tableau d'entiers.

Transféré par

bourakadi.d604
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

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;

Vous aimerez peut-être aussi