EX0 Langagec

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

TRAVAUX DIRIGÉS 3-ENSPY_AVRIL 2023

PROGRAMMATION EN LANGAGE C

Exercice 1

Qu’affichent chacun des programmes suivants ?

a)
#include <stdio.h>
#define M 3

#define N 4

int main ( )

{
int a, b, c = 0 , d;

for ( a = 0 ; a < M ; a++)

{
d = 0;

for ( b = 0 ; b < N ; b++)

d += b;

c += d;
}

printf("a=%d, b=%d, c=%d, d = %d", a, b, c, d) ;

return 0;

}
b)
#include <stdio.h>
#define N 5

int main ( )

{
int a = 1, b = 0;
© COPYRIGHT 2023

while( a <= N )

b += a++;
printf ( "%d , %d \n", a, b ) ;

return 0;

Téléphone : 698 222 277 / 671 839 797 Facebook : Intelligentsia Corporation Email : [email protected] 32
TRAVAUX DIRIGÉS 3-ENSPY_AVRIL 2023

#include <stdio.h>

c) int main ( )
{

int a, b, c, d;

a = 1; b = 2;

c = a / b;
d = (a==b) ? 3 : 4 ;

printf( " c = %d , d = %d \n", c, d );

a = ++b;

b %= 3;
printf( " a = %d , b = %d \n", a, b ) ;

b = 1;

for( a = 0 ; a < = 10 ; a++)


c = ++b;

printf("a=%d, b=%d, c=%d, d=%d \n", a, b, c , d );

return 0;

Exercice 2

1) Ecrire un programme plaçant dans un tableau int T[10]; les valeurs 1, 2, 3, …,


10, puis affichant ce tableau. Vous initialiserez le tableau à la déclaration.
2) Affichez la somme des n éléments du tableau T.
3) Demandez à l'utilisateur de saisir un int et dites-lui si ce nombre se trouve
dans T.
4) Ecrire une fonction « int somme(int T[], int n) » retournant la somme des n
éléments du tableau T.
© COPYRIGHT 2023

5) Ecrire une fonction « int min(int T[], int n) » retournant la valeur du plus
petit élément du tableau T.
6) Ecrire une fonction « int position(int T[], int n, int k) » retournant la position
de la première occurrence de k dans le tableau T. On devra retourner -1 si k
n’exite pas dans le tableau.

33 « Avec Intelligentsia corporation… Il suffit d’y croire !!! »


TRAVAUX DIRIGÉS 3-ENSPY_AVRIL 2023

7) Ecrivez le corps de la fonction « int sommePairs(int T[], int n) »,


sommePairs(T) retourne la somme des éléments pairs du tableau T à n
éléments.
8) Ecrivez le corps de la fonction « int estTrie(int T[], int n) », estTrie() retourne
vrai si et seulement si le tableau T, à n éléments, est trié dans l'ordre
croissant.
9) Ecrivez une fonction « void inserePremiers(int T[], int n) » plaçant dans le
tableau T les n premiers nombres premiers.

Exercice 3

Proposer une fonction C admissible pour :

 Approximation de 2 par une série: 2 ∑

 Approximation de e par une série: ∑


!

Exercice 4

Ecrire une procédure récursive « void quick_sort(int tab[], int min, int max) »
qui effectue le tri rapide par ordre croissant des éléments de tab entre les indices
« min » et « max ».

Exercice 5

Créer une fonction (ou procédure) pour :


1. Créer une liste avec les n premiers entiers dans l’ordre décroissant.
2. Calculer la moyenne d’une liste.
3. Retourner la liste des carrés d’une autre liste passée en paramètre.
4. Retirer le premier élément d’une liste.
© COPYRIGHT 2023

5. Retirer le dernier élément d’une liste.


6. Retirer l’élément à la position « i » (si possible, sinon retirer le dernier).
7. Insérer un élément à la position « i » (si possible, sinon insérer à la fin).
8. Concaténer deux listes.

Téléphone : 698 222 277 / 671 839 797 Facebook : Intelligentsia Corporation Email : [email protected] 34
TRAVAUX DIRIGÉS 3-ENSPY_AVRIL 2023

9. Créer une liste contenant des mots. Retournez le mot le plus grand suivant
l’ordre alphanumérique (On créera une structure adaptée au stockage des
mots).

Exercice 6

Le but de cet exercice est de créer n tableaux de chacun m éléments, de placer les
n pointeurs ainsi obtenus dans un tableau de pointeurs T de type int et de manier
T comme un tableau à deux dimensions.
Ecrivez les corps des fonctions suivantes :

1. « int** getTiAdr(int** T, int i) » retourne l'adresse du pointeur vers le ième


tableau d'int de T.
2. « int* getTi (int** T, int i) » retourne le i-ème tableau d'int de T ,
vous utiliserez getTiAdr.
3. « void setTAdr(int** T, int* p) » place dans la variable pointée par T le
pointeur p.
4. « void setTi(int** T, int i, int* p) » fait de p le ième tableau de T ,
vous utiliserez getTAdr et setTiAdr.
5. « void createT(int** T, int n, int m) » fait pointer chacun des n éléments de
T vers un tableau à m éléments. Vous utiliserez setTiAdr.

Nous noterons Tij le j-ème élément du tableau T[i].


Pour la suite, le but est de placer dans Tij la valeur 10i+j. Vous utiliserez les
fonctions « int getIntVal(int *p) », « void setIntVal(int* p, int val) », « int*
getTiAdr(int* t, int i) », « int getTiVal(int* t, int i) » et « void setTiVal(int*
t, int i, int val) » pour écrire les corps des sous-programmes ci-dessous :
6. « int* getTijAdr(int** t, int i, int j) » retourne l'adresse de Tij
7. « int getTijVal(int** t, int i, int j) » retourne la valeur de Tij
© COPYRIGHT 2023

8. « void setTijVal(int** t, int i, int j, int val) » affecte à Tij la valeur val.
NB : Pour les listes simplement chaînées, sauf en cas d’indication contraire, on
considèrera la structure de données définie en cours.

35 « Avec Intelligentsia corporation… Il suffit d’y croire !!! »


TRAVAUX DIRIGÉS 3-ENSPY_AVRIL 2023

Exercice 7

Une pile est une structure de données telle que :


- l’ajout d’un élément se fait au sommet de la pile,
- la suppression d’un élément se fait également au sommet de la pile.
La structure de données est appelée LIFO : « Last In First Out » soit « Dernier
Entré, Premier Sorti ».

Ecrire les fonctions suivantes :


1. initialiserPile() qui initialise une liste vide
2. pileVide() qui retourne vrai si la liste est vide
3. empiler() qui permet d’ajouter un élément en tête de la liste (la valeur à
empiler sera demandée à l’utilisateur)
4. depiler() qui enlève un élément en tête de la liste et l’affiche à l’écran.
5. afficher() qui affiche les élément de la liste de manière récursive.

© COPYRIGHT 2023

Téléphone : 698 222 277 / 671 839 797 Facebook : Intelligentsia Corporation Email : [email protected] 36

Vous aimerez peut-être aussi