0% ont trouvé ce document utile (0 vote)
19 vues6 pages

Proposition de Correction

Le document présente des corrections pour trois exercices de programmation en C. L'exercice 7 consiste à recopier une chaîne de caractères dans un tableau alloué dynamiquement sans utiliser les fonctions standard. Les exercices 8 et 9 traitent respectivement de l'inversion d'un tableau d'entiers et de la lecture d'un tableau avec calcul de la somme de ses éléments, en utilisant des pointeurs.

Transféré par

mansour diouf
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 PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues6 pages

Proposition de Correction

Le document présente des corrections pour trois exercices de programmation en C. L'exercice 7 consiste à recopier une chaîne de caractères dans un tableau alloué dynamiquement sans utiliser les fonctions standard. Les exercices 8 et 9 traitent respectivement de l'inversion d'un tableau d'entiers et de la lecture d'un tableau avec calcul de la somme de ses éléments, en utilisant des pointeurs.

Transféré par

mansour diouf
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 PDF, TXT ou lisez en ligne sur Scribd

Proposition de correction :

Exercice 7 : Copie de chaînes de caractères


Ecrivez un programme qui saisit proprement une chaîne de caractère S et
qui la recopie dans un tableau crée avec malloc et de contenance
correspondant exactement à la longueur de s. Vous n'utiliserez ni strlen, ni
strcpy.

Correction :

#include <stdio.h>
#include <stdlib.h>

int main() {
char S[100]; // Tableau temporaire pour stocker la saisie
char *copieS;
int i, taille = 0;

// Saisie de la chaîne
printf("Entrez une chaîne de caractères : ");
fgets(S, sizeof(S), stdin); // Utilisation de fgets pour éviter les
débordements

// Calcul de la longueur de S (sans strlen)


while (S[taille] != '\0' && S[taille] != '\n') {
taille++;
}

// Allocation dynamique d'un tableau de la taille exacte de la chaîne


copieS = (char *)malloc((taille + 1) * sizeof(char));
// Vérification de la réussite de l'allocation mémoire
if (copieS == NULL) {
printf("Erreur d'allocation mémoire.\n");
return 1;
}

// Copie de S vers copieS (sans strcpy)


for (i = 0; i < taille; i++) {
copieS[i] = S[i];
}
copieS[taille] = '\0'; // Ajout du caractère de fin de chaîne

// Affichage de la copie
printf("Copie de la chaîne : %s\n", copieS);

// Libération de la mémoire allouée


free(copieS);

return 0;
}

Exercice 8:
Écrire un programme qui range les éléments d'un tableau A de type entier
dans l'ordre inverse. Le programme utilisera deux pointeurs P1 et P2 et
une variable numérique AIDE pour la permutation des éléments.

Correction :
#include <stdio.h>

int main() {
int A[100], n, i, AIDE;
int *P1, *P2; // Déclaration des pointeurs

// Demande à l'utilisateur la taille du tableau


printf("Entrez la taille du tableau : ");
scanf("%d", &n);

// Saisie des éléments du tableau


printf("Entrez les éléments du tableau :\n");
for (i = 0; i < n; i++) {
scanf("%d", &A[i]);
}

// Affichage du tableau avant inversion


printf("Tableau avant inversion : ");
for (i = 0; i < n; i++) {
printf("%d ", A[i]);
}
printf("\n");

// Initialisation des pointeurs


P1 = A; // P1 pointe sur le premier élément
P2 = A + (n - 1); // P2 pointe sur le dernier élément
// Inversion des éléments en utilisant P1 et P2
while (P1 < P2) {
AIDE = *P1; // Sauvegarde de la valeur de P1
*P1 = *P2; // Échange de P1 avec P2
*P2 = AIDE; // Restauration de la valeur de P1 dans P2

// Déplacement des pointeurs


P1++;
P2--;
}

// Affichage du tableau après inversion


printf("Tableau après inversion : ");
for (i = 0; i < n; i++) {
printf("%d ", A[i]);
}
printf("\n");

return 0;
}

Exercice 9
Ecrire un programme qui lit la dimension N d'un tableau T du type entier
(dimension maximale : 50 composantes), remplit le tableau par des
valeurs entrées au clavier et affiche le tableau. Calculer et afficher ensuite
la somme des éléments du tableau. Utiliser le formalisme pointeur.
Correction :
#include <stdio.h>

#define MAX 50 // Taille maximale du tableau

int main() {
int T[MAX], N, i, somme = 0;
int *p; // Déclaration du pointeur

// Demande à l'utilisateur la taille du tableau


do {
printf("Entrez la dimension du tableau (max 50) : ");
scanf("%d", &N);
} while (N <= 0 || N > MAX);

// Saisie des éléments du tableau


printf("Entrez les %d éléments du tableau :\n", N);
for (p = T; p < T + N; p++) {
scanf("%d", p); // Utilisation du pointeur pour remplir le tableau
}

// Affichage du tableau
printf("Tableau saisi : ");
for (p = T; p < T + N; p++) {
printf("%d ", *p); // Utilisation du pointeur pour afficher
}
printf("\n");
// Calcul de la somme des éléments du tableau avec un pointeur
for (p = T; p < T + N; p++) {
somme += *p;
}

// Affichage de la somme des éléments du tableau


printf("Somme des éléments du tableau : %d\n", somme);

return 0;
}

Vous aimerez peut-être aussi