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

DL 0 Corr

Le document présente des exercices de programmation en langage C, axés sur l'utilisation des pointeurs et de l'allocation dynamique. Il inclut des exemples de code pour manipuler des tableaux, trouver les valeurs maximales et minimales, et inverser un tableau. Chaque exercice est accompagné d'explications et de commentaires pour faciliter la compréhension des concepts abordés.

Transféré par

epsychov8
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)
22 vues6 pages

DL 0 Corr

Le document présente des exercices de programmation en langage C, axés sur l'utilisation des pointeurs et de l'allocation dynamique. Il inclut des exemples de code pour manipuler des tableaux, trouver les valeurs maximales et minimales, et inverser un tableau. Chaque exercice est accompagné d'explications et de commentaires pour faciliter la compréhension des concepts abordés.

Transféré par

epsychov8
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

Informatique 2 : Programmation en langage C.

DL 0 : Les pointeurs et allocation dynamique

Exercice 1:

// création
int i;int *p;
// initialisation
i = 6;p = &i;
//afficher la valeur de i
printf("avant: %d \n", i);
//Modifier l'entier pointé par p (en utilisant p)
*p = 17;
//Afficher la valeur de i.
printf("Apres: %d \n", i);

[Link] Mourad
Exercice 2:
1-
int t[4] = {10, 20, 30, 40};
int *ad[4];
// t+i adresse de i eme element.. <==>&t[0]+i
for (int i = 0; i < 4; i++) ad[i] = t + i;

for (int i = 0; i < 4; i++) printf("%d\n", *ad[i]);


//10
//20
//30
//40

printf("%d %d \n", *(ad[1] + 1), *ad[1] + 1);

//30 21

2-

[Link] Mourad
Exercice 3:

Ecrire de deux façons différentes, un programme C qui lit 10 nombres entiers


dans un tableau avant d'en chercher le plus grand (Max) et le plus petit (Min).

a) en utilisant uniquement le formalisme tableau

//Déclarations
int A[10];//tableau donné de 10 éléments
int max; //valeur maximale à calculer.
int min; //valeur minimale à calculer.
//Saisie des données.
printf("Dimension N du tableau A : ");
for (int i=0; i<10; i++){
printf("Elément %d : ", i);
scanf("%d", &A[i]);
}
//calcul de Max et de Min de tableau A.
max=A[0];min=A[0];
for (int i=0; i<10; i++){
if (A[i]>max) max=A[i];
if (A[i]<min) min=A[i];
}
//Affichage de résultats
printf("Le min est %d\n",min);
printf("Le max est %d\n",max);

[Link] Mourad
b) en utilisant le formalisme pointeur à chaque fois que cela est possible

//Déclarations
int A[10]; //tableau donné de 10 éléments
int max; //valeur maximale à calculer.
int min; //valeur minimale à calculer.
int *P ; //pointeur
//Saisie des données.
printf("Dimension N du tableau A : ");
for (P=A; P<A+10; P++){
printf("Elément %d : ", P-A);scanf("%d", P);}
//calcul de Max et de Min de tableau A.
P=A;max=*P;min=*P;
for (P=A+1; P<A+10; P++){
if (*P>max) max=*P;
if (*P<min) min=*P;}
//Affichage de résultats
printf("Le min est %d\n",min);
printf("Le max est %d\n",max);

[Link] Mourad
Exercice 4:
Ecrire un programme C qui lit deux tableaux d'entiers A et B et leurs dimensions
N et M au clavier et qui ajoute les éléments de B à la fin de A.
//Déclarations
int A[100], B[50]; //tableaux
int N, M; //dimensions des tableaux */
int I; //indice courant
//Saisie des données
printf("Dimension du tableau A (max.50) : ");
scanf("%d", &N );
for (I=0; I<N; I++){
printf("Elément %d : ", I);
scanf("%d", A+I);}
printf("Dimension du tableau B (max.50) : ");
scanf("%d", &M );
for (I=0; I<M; I++){
printf("Elément %d : ", I);
scanf("%d", B+I);}
//Affichage des tableaux
printf("Tableau donné A :\n");
for (I=0; I<N; I++)printf("%d ", *(A+I));
printf("\n");
printf("Tableau donné B :\n");
for (I=0; I<M; I++){printf("%d ", *(B+I));}
printf("\n");
//Copie de B à la fin de A
for (I=0; I<M; I++){
*(A+N+I) = *(B+I);}
N += M;//Nouvelle dimension de A
//Edition du résultat
printf("Tableau résultat A :\n");
for (I=0; I<N; I++)
printf("%d ", *(A+I));

[Link] Mourad
Exercice 5:

Ecrire un programme C qui range les élément d'un tableau dans l'ordre inverse.

//Déclarations
int *A=NULL; //tableau donné
int N; //dimension du tableau
int temp; //pour la permutation
int *P1, *P2; //pointeurs d'aide

//allocation dynamique
printf("Dimension du tableau: ");
scanf("%d", &N);
A=malloc(N*sizeof(int));

//Saisie des données


for (P1 = A; P1 < A + N; P1++) {
printf("Elément %d : ", P1 - A);
scanf("%d", P1);}

//Inverser la tableau
for (P1=A, P2=A + (N - 1); P1 < P2; P1++, P2--) {
temp = *P1;
*P1 = *P2;
*P2 = temp;
}

//Affichage
for (P1 = A; P1 < A + N; P1++){
printf("%d ", *P1);
}

free(A);

[Link] Mourad

Vous aimerez peut-être aussi