TP3 - Correction
TP3 - Correction
TP3 - Correction
S. QASSIMI MIPC
Exercice 1 :
#include <stdio.h>
main()
{
/* Déclarations */
int A[100], B[50]; /* tableaux */
int N, M; /* dimensions des tableaux */
int I; /* indice courant */
Exercice 2 :
Écrire un programme qui lit un entier X et un tableau A du type int au clavier et élimine
toutes les occurrences de X dans A en tassant les éléments restants. Le programme utilisera
les pointeurs P1 et P2 pour parcourir le tableau
#include <stdio.h>
main()
{
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension du tableau */
int X; /* valeur à éliminer */
int *P1, *P2; /* pointeurs d'aide */
Exercice 3 :
Ecrire un programme qui range les éléments d'un tableau A du type int dans l'ordre inverse.
Le programme utilisera des pointeurs P1 et P2 et une variable numérique AIDE pour la
permutation des éléments.
#include <stdio.h>
main()
{
/* Déclarations */
int A[50]; /* tableau donné */
int N; /* dimension du tableau */
int AIDE; /* pour la permutation */
int *P1, *P2; /* pointeurs d'aide */
/* Saisie des données */
printf("Dimension du tableau (max.50) : ");
scanf("%d", &N );
for (P1=A; P1<A+N; P1++)
{
printf("Elément %d : ", P1-A);
scanf("%d", P1);
}
/* Affichage du tableau */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
/* Inverser la tableau */
for (P1=A,P2=A+(N-1); P1<P2; P1++,P2--)
{
AIDE = *P1;
*P1 = *P2;
*P2 = AIDE;
}
/* Edition du résultat */
for (P1=A; P1<A+N; P1++)
printf("%d ", *P1);
printf("\n");
return 0;
}
Exercice 4 :
Ecrire un programme qui lit une matrice A de dimensions N et M au clavier et affiche les
données suivantes en utilisant le formalisme pointeur à chaque fois que cela est possible :
a) la matrice A
b) la transposée de A
#include <stdio.h>
main()
{
/* Déclarations */
int A[50][50]; /* matrice */
int N, M; /* dimensions de la matrice */
int I, J; /* indices courants */
/* Saisie des données */
printf("Nombre de lignes (max.50) : ");
scanf("%d", &N );
printf("Nombre de colonnes (max.50) : ");
scanf("%d", &M );
/* Lecture de la matrice au clavier */
for (I=0; I<N; I++)
for (J=0; J<M; J++)
{
printf("Elément[%d][%d] : ",I,J);
scanf("%d", (int *)A+I*50+J);
}
/* a) Affichage de la matrice */
printf("Matrice donnée :\n");
for (I=0; I<N; I++)
{
for (J=0; J<M; J++)
printf("%7d", *((int *)A+I*50+J));
printf("\n");
}
/* b) Affichage de la transposée de A */
printf("Matrice transposée :\n");
for (J=0; J<M; J++)
{
for (I=0; I<N; I++)
printf("%7d ", *((int *)A+I*50+J));
printf("\n");
}
printf("\n");
return 0;
}
Exercice 5 :
#include <stdio.h>
main()
{
/* Déclarations */
char CH[101]; /* chaîne donnée */
char *P; /* pointeur d'aide */
Exercice 6 :
Ecrire un programme qui lit un caractère C et une chaîne de caractères CH au clavier. Ensuite
toutes les occurrences de C dans CH seront éliminées. Le reste des caractères dans CH sera
tassé à l'aide d'un pointeur et de la fonction strcpy.
#include <stdio.h>
#include <string.h>
main()
{
/* Déclarations */
char CH[101]; /* chaîne donnée */
char C; /* lettre à éliminer */
char *P; /* pointeur d'aide dans CH */
/* Affichage du résultat */
printf("Chaîne résultat : \"%s\"\n", CH);
return 0;
}
Exercice 7 :
Ecrire un programme qui lit 5 mots d'une longueur maximale de 50 caractères et les
mémorise dans un tableau de chaînes de caractères TABCH. Inverser l'ordre des caractères à
l'intérieur des 5 mots à l'aide de deux pointeurs P1 et P2. Afficher les mots.
#include <stdio.h>
main()
{
/* Déclarations */
char TABCH[5][51];/* tableau de chaînes de caractères */
char AIDE; /* pour la permutation des caractères */
char *P1, *P2; /* pointeurs d'aide */
int I; /* indice courant */
Nous voulons construire un tableau représenté initialement par un pointeur *tableau de type
int et initialisé à NULL.
Ce tableau aura une dimension qui aura comme dimension un nombre (saisi à l’exécution)
A l’aide de la fonction malloc, on vous demande de réserver un emplacement mémoire pour
ce tableau et saisir ces éléments.
Afficher les éléments du tableau et libérer la mémoire
int main() {
int nombre = 0;
int *tableau = NULL;
int x = 0;
printf ("Veuillez entrer la taille du tableau : ");
scanf ("%d", &nombre);
tableau = malloc(sizeof(int) * nombre);
for (x = 0; x <nombre; x++) {
printf ("Veuillez entrer un nombre : ");
scanf ("%d", &tableau[x]);
}
for (x = 0; x < nombre; ++x) {
printf ("Nombre %d : %d\n", (x + 1), tableau[x]);
}
free(tableau);
return 0;
}