Vous êtes sur la page 1sur 4

Faculté des Sciences - EL JADIDA TC - Informatique Appliquée

TP4 : Les pointeurs


« Correction »

Exercice 1

#include <stdio.h>
int main() {
int a, b;
// Demander à l'utilisateur de saisir les valeurs des variables
printf("Entrez la valeur de la variable a : ");
scanf("%d", &a);
printf("Entrez la valeur de la variable b : ");
scanf("%d", &b);
// Échanger les valeurs en utilisant des pointeurs
int *ptrA = &a;
int *ptrB = &b;
// Utiliser une variable temporaire pour effectuer l'échange
int temp = *ptrA;
*ptrA = *ptrB;
*ptrB = temp;
// Afficher les valeurs après l'échange
printf("Apres l'echange :\n");
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
Exercice 2

#include <stdio.h>
int main() {
int taille;
// Demander à l'utilisateur de saisir la taille du tableau
printf("Entrez la taille du tableau : ");
scanf("%d", &taille);
if (taille <= 0) {
printf("La taille du tableau doit être supérieure à zéro.\n");
return 1;
}
int tableau[taille];
int *ptrTableau = tableau; // Pointeur vers le début du tableau
// Demander à l'utilisateur de saisir les éléments du tableau
printf("Entrez les elements du tableau :\n");
for (int i = 0; i < taille; i++) {
printf("Element %d : ", i + 1);
scanf("%d", ptrTableau + i);
}

Pr. I. EL GUABASSI 1/2 Année Universitaire : 2023-2024


Faculté des Sciences - EL JADIDA TC - Informatique Appliquée

// Calculer la somme des éléments en utilisant des pointeurs


int somme = 0;
for (int i = 0; i < taille; i++) {
somme += *(ptrTableau + i); // Utilisation de l'opérateur de déréférencement *
}
// Afficher la somme
printf("La somme des elements du tableau est : %d\n", somme);
return 0;
}
Exercice 3

#include <stdio.h>
int main() {
int taille;
// Demander à l'utilisateur de saisir la taille du tableau
printf("Entrez la taille du tableau : ");
scanf("%d", &taille);
if (taille <= 0) {
printf("La taille du tableau doit être supérieure à zéro.\n");
return 1;
}
int tableau[taille];
int *ptrTableau = tableau; // Pointeur vers le début du tableau
// Demander à l'utilisateur de saisir les éléments du tableau
printf("Entrez les elements du tableau :\n");
for (int i = 0; i < taille; i++) {
printf("Element %d : ", i + 1);
scanf("%d", ptrTableau + i);
}
// Rechercher la plus grande valeur et son indice en utilisant des pointeurs
int maxValeur = *ptrTableau;
int indiceMax = 0;
for (int i = 1; i < taille; i++) {
if (*(ptrTableau + i) > maxValeur) {
maxValeur = *(ptrTableau + i);
indiceMax = i;
}
}
// Afficher la plus grande valeur et son indice
printf("La plus grande valeur du tableau est : %d\n", maxValeur);
printf("Son indice dans le tableau est : %d\n", indiceMax);
return 0;
}
Exercice 4

#include <stdio.h>
int main() {
char chaineSource[100]; // Supposons que la chaîne source ne dépasse pas 100 caractères
char chaineDestination[100]; // Supposons que la chaîne de destination ait la même taille
Pr. I. EL GUABASSI Année Universitaire : 2023-2024
Faculté des Sciences - EL JADIDA TC - Informatique Appliquée

// Demander à l'utilisateur de saisir la chaîne source


printf("Entrez une chaine de caracteres (source) : ");
scanf("%s", chaineSource);
// Pointeurs pour parcourir les chaînes source et destination
char *ptrSource = chaineSource;
char *ptrDestination = chaineDestination;
// Copier la chaîne source dans la chaîne de destination en utilisant des pointeurs
while (*ptrSource != '\0') {
*ptrDestination = *ptrSource;
ptrSource++;
ptrDestination++;
}
*ptrDestination = '\0'; // Ajouter le caractère nul de fin
// Afficher la chaîne de destination
printf("La chaine de destination est : %s\n", chaineDestination);
return 0;
}

Exercice 5

#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
// Demander à l'utilisateur de saisir le nombre d'entiers à allouer
printf("Entrez le nombre d'entiers : ");
scanf("%d", &n);
if (n <= 0) {
printf("Le nombre d'entiers doit être supérieur à zéro.\n");
return 1;
}
// Allouer dynamiquement de la mémoire pour le tableau d'entiers
int *tableau = (int *)malloc(n * sizeof(int));
if (tableau == NULL) {
printf("L'allocation de mémoire a échoué.\n");
return 1;
}
// Demander à l'utilisateur de remplir le tableau
printf("Saisissez les %d entiers :\n", n);
for (int i = 0; i < n; i++) {
printf("Element %d : ", i + 1);
scanf("%d", &tableau[i]);
}
// Afficher les éléments du tableau
printf("Les elements du tableau sont :\n");
for (int i = 0; i < n; i++) {
printf("%d ", tableau[i]);
}

Pr. I. EL GUABASSI Année Universitaire : 2023-2024


Faculté des Sciences - EL JADIDA TC - Informatique Appliquée

printf("\n");
// Libérer la mémoire allouée
free(tableau);
return 0;
}
Exercice 6

#include <stdio.h>
int main() {
int taille;
// Demander à l'utilisateur de saisir la taille du tableau
printf("Entrez la taille du tableau : ");
scanf("%d", &taille);
if (taille <= 0) {
printf("La taille du tableau doit être supérieure à zéro.\n");
return 1;
}
int tableau[taille];
// Demander à l'utilisateur de saisir les éléments du tableau
printf("Saisissez les %d elements du tableau :\n", taille);
for (int i = 0; i < taille; i++) {
printf("Element %d : ", i + 1);
scanf("%d", &tableau[i]);
}
// Demander à l'utilisateur de saisir le nombre à rechercher
int elementRecherche;
printf("Entrez le nombre a rechercher : ");
scanf("%d", &elementRecherche);
int occurences = 0;
// Utilisation de pointeurs pour compter les occurrences
int *ptr = tableau;
for (int i = 0; i < taille; i++) {
if (*ptr == elementRecherche) {
occurences++;
}
ptr++;
}
printf("L'element %d apparait %d fois dans le tableau.\n", elementRecherche, occurences);
return 0;
}

Pr. I. EL GUABASSI Année Universitaire : 2023-2024

Vous aimerez peut-être aussi