0% ont trouvé ce document utile (0 vote)
38 vues4 pages

TP4 - Tableaux: Exercice 1: (Interaction Utilisateur Non Bornée)

Ce document présente une série d'exercices de programmation en C, axés sur l'utilisation des tableaux et des interactions utilisateur. Les exercices couvrent des sujets tels que la saisie de nombres, le calcul de moyennes, la gestion de notes coéfficientées, et la manipulation de tableaux d'entiers. Chaque exercice inclut des instructions détaillées pour la mise en œuvre de programmes spécifiques, visant à renforcer les compétences en programmation impérative.

Transféré par

prabpreet406
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)
38 vues4 pages

TP4 - Tableaux: Exercice 1: (Interaction Utilisateur Non Bornée)

Ce document présente une série d'exercices de programmation en C, axés sur l'utilisation des tableaux et des interactions utilisateur. Les exercices couvrent des sujets tels que la saisie de nombres, le calcul de moyennes, la gestion de notes coéfficientées, et la manipulation de tableaux d'entiers. Chaque exercice inclut des instructions détaillées pour la mise en œuvre de programmes spécifiques, visant à renforcer les compétences en programmation impérative.

Transféré par

prabpreet406
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

Université Paris-Est Créteil Programmation impérative en C

Emmanuel Polonowski

TP4 - Tableaux

Exercice 1 : [Interaction utilisateur non bornée]


1. Écrire un programme qui demande à l'utilisateur d'entrer successivement plusieurs nombres et
affiche à chaque fois la somme cumulée. Par exemple :

$ prog.exe
La somme est actuellement 0.
Entrer un nombre : 12
La somme est actuellement 12.
Entrer un nombre : 7
La somme est actuellement 19.
...

2. L'exécution du programme ne s'arrête pas spontanément. Pour interrompre l'exécution, utiliser


la combinaison de touche Ctrl-C.
3. Ajouter une condition de sortie de la boucle, lorsque l'utilisateur saisit la valeur 0.

...
Entrer un nombre : 0
La somme finale est 19.
$

4. Modifier le programme pour qu'il affiche, à la fin, la moyenne de toutes les valeurs saisies.

Exercice 2 : [Interaction pour contrôler une saisie]


1. Écrire un programme qui demande à l'utilisateur une valeur comprise entre 0 et 20, et répète la
saisie jusqu'à ce que la valeur soit correcte :

$ prog.exe
Saisir un nombre compris entre 0 et 20 : 36
Non ! 36 n'est pas compris entre 0 et 20, recommencez . . .
Saisir un nombre compris entre 0 et 20 : 21
Non ! 36 n'est pas compris entre 0 et 20, recommencez . . .
Saisir un nombre compris entre 0 et 20 : 17
Oui ! 17 est bien compris entre 0 et 20, bravo !
$

2. Mettre cette portion de code dans une fonction int saisir_note() qui renvoie en résultat la note
saisie uniquement lorsqu'elle est bien comprise entre 0 et 20.

Exercice 3 : [Saisie de notes dans un tableau]


1. Écrire un programme pour qui interagit avec l'utilisateur pour saisir un ensemble de notes, puis
affiche la plus haute et la plus basse des notes, ainsi que la moyenne des notes saisies.

1
2. Après la saisie des notes, on souhaite afficher combien de notes sont supérieures à une valeur saisie
par l'utilisateur, est-ce possible sans utiliser une nouvelel structure de données ?
3. Dans le programme principal, définir un tableau de notes permettant d'accueillir 20 notes. Modifier
le programme pour qu'il stocke dans le tableau les notes saisies au fur et à mesure de l'interaction
avec l'utilisateur. Après chaque saisie le programme demandera à l'utilisateur s'il souhaite saisir
une nouvelle note. On utilisera ici la boucle while.
4. Ajouter une procédure affiche_notes qui prend en paramètre un tableau de notes et sa taille, et
affiche son contenu. On utilisera ici une boucle for.
5. Ajouter une fonction moyenne qui prend en paramètre un tableau de notes et sa taille, et renvoie
comme résultat la moyenne des valeurs saisies. On utilisera ici une boucle for.

Exercice 4 : [Travailler avec plusieurs tableaux]


1. Dans le programme principal, définir un tableau de coefficients permettant d'accueillir 20 coeffi-
cients. Modifier le programme pour qu'il stocke dans le tableau les coefficients saisis au fur et à
mesure de l'interaction avec l'utilisateur.
2. Ajouter une procédure affiche_notes_et_coeff qui prend en paramètre un tableau de notes, un
tableau de coefficients et leur taille (on supposera que les deux tableaux ont la meme taille), et
affiche chaque note assortie de son coefficient (les coefficients sont rangés dans le même ordre que
les notes).
3. Ajouter une fonction moyenne qui prend en paramètre un tableau de notes, un tableau de coef-
ficients et leur taille (on supposera que les deux tableaux ont la meme taille), et renvoie comme
résultat la moyenne des valeurs saisies.

Exercice 5 : [Saisie de notes pour calculer une moyenne]


1. En utilisant la fonction saisir_note() de l'exercice précédent, et du fonctionnement décrit dans
l'exercice 1, écrire un programme qui lit 5 notes et affiche à la fin la moyenne de ces notes.
2. On souhaite à présent travailler avec des notes coefficientées. Définir une structure de données
permettant de représenter une note assortie de son coefficient. Modifier la fonction saisir_note
pour qu'elle renvoie une donnée de ce nouveau type, en contrôlant que la note est bien comprise
entre 0 et 20 et que le coefficient est compris entre 0 et 3.
3. Modifier le programme principal pour qu'il calcule progressivement puis affiche à la fin la moyenne
des notes coefficientées.

Exercice 6 : [Saisie de notes coefficientées dans un tableau]


1. Dans le programme principal, définir un tableau de notes coefficientées permettant d'accueillir 20
notes. Modifier le programme pour qu'il stocke dans le tableau les notes et les coefficients saisis
au fur et à mesure de l'interaction avec l'utilisateur. Après chaque saisie le programme demandera
à l'utilisateur s'il souhaite saisir une nouvelle note.
2. Ajouter une procédure affiche_notes qui prend en paramètre un tableau de notes et sa taille, et
affiche son contenu.
3. Ajouter une fonction moyenne qui prend en paramètre un tableau de notes et sa taille, et renvoie
comme résultat la moyenne des valeurs saisies.

Exercice 7 : [Saisie des notes d'un groupe dans un tableau de tableaux]


1. On souhaite à présent stocker les notes (non coefficientées pour commencer) de l'ensemble des
étudiants d'un groupe. Pour cela, chaque étudiant aura l'ensemble de ses notes stockées dans un
tableau, et ces relevés de notes seront chacun stocké dans la case d'un autre tableau dont le nombre
de cases sera la taille du groupe. Définir le type de données adapté pour cela, en commançant avec
3 notes par étudiants et un groupe de 5 étudiants.

2
2. Ajouter une procédure affiche_notes qui prend en paramètre un tableau de groupe et affiche
sur chaque ligne : le numéro de l'étudiant (en commançant par 1) puis l'ensemble de ses notes et
enfin sa moyenne générale. Après chaque ligne d'étudiant, la procédure affichera la moyenne de
chaque matière et la moyenne générale du groupe.
3. Modifier le programme pour travailler avec la structure de données des notes coefficientées.

Exercice 8 : [Opérations élémentaires sur tableau d'entier] Pour chaque point ci-dessous, écrire
une fonction ou une procédure effectuant le traitement demandé sur un tableau pris en paramètre. Tester
le programme sur plusieurs exemples, dont le tableau [3, 6, 8, 5, 10, 3, 7, 6, 3, 2].
a) Affiche le tableau sur une seule ligne avec le symbole # entre chaque valeur. Pour l'exemple, cela
donne : 3 # 6 # 8 # 5 # 10 # 3 # 7 # 6 # 3 # 2
b) Affiche le tableau sur une seule ligne en commançant par la dernière case.
c) Affiche le tableau en mettant une valeur sur chaque ligne.
d) Inverse le tableau. Pour l'exemple, cela donne : [2, 3, 6, 7, 3, 10, 5, 8, 6, 3]
e) Ajoute à chaque case la valeur contenune dans la case précédente. La première case sera laissée
inchangée. Pour l'exemple, cela donne : [3, 9, 14, 13, 15, 13, 10, 13, 9, 5].
f) Décale le contenu des cases du tableau d'une case vers la droite, en mettant 0 dans la première
case. Pour l'exemple, cela donne [0, 3, 6, 8, 5, 10, 3, 7, 6, 3].
g) Décale le contenu des cases du tableau d'une case vers la gauche, en mettant 0 dans la dernière
case. Pour l'exemple, cela donne [6, 8, 5, 10, 3, 7, 6, 3, 2, 0].
h) Décale de façon circulaire le contenu des cases du tableau d'une case vers la droite, en mettant
dans la première case ce qui était dans la dernière case. Pour l'exemple, cela donne [2, 3, 6, 8, 5,
10, 3, 7, 6, 3].
i) Décale de façon circulaire le contenu des cases du tableau d'une case vers la gauche, en mettant
dans la dernière case ce qui était dans la première case. Pour l'exemple, cela donne [6, 8, 5, 10, 3,
7, 6, 3, 2, 3].
j) Décale de façon circulaire le contenu des cases du tableau de plusieurs cases vers la gauche, le
nombre de case doit être demandé à l'utilisateur. Pour l'exemple, si l'utilisateur saisit la valeur 4,
cela donne [10, 3, 7, 6, 3, 2, 3, 6, 8, 5].
k) Idem mais avec un décalage à droite.

Exercice 9 : [Calculs élémentaires sur tableau d'entier] Pour chaque point ci-dessous, écrire un
programme qui lit le tableau d'entiers sur la ligne de commande (sans oublier la conversion de texte en
entier), le stocke dans une variable interne au programme, puis effectue le traitement demandé. Tester
le programme sur plusieurs exemples, dont le tableau [3, 6, 8, 5, 10, 3, 7, 6, 3, 2].
a) Calcule et affiche la somme des valeurs contenues dans le tableau.
b) Calcule et affiche le produit des valeurs contenues dans le tableau.
c) Calcule et affiche la moyenne des valeurs contenues dans le tableau.
d) Calcule et affiche la plus grande des valeurs contenues dans le tableau.
e) Calcule et affiche la plus petite des valeurs contenues dans le tableau.
f) Affiche le nombre d'occurences dans le tableau d'une valeur saisie par l'utilisateur. Pour l'exemple,
si l'utilisateur saisit la valeur 3 cela affiche 3, s'il saisit la valeur 6 cela affiche 2, s'il saisit la valeur
10 ela affiche 1 et s'il saisit la valeur 9 cela affiche 0.
g) Calcule et affiche l'indice de la case qui contient la plus grande valeur. Comparer avec la question
d).

3
Exercice 10 : [Grands entiers] On souhaite représenter des entiers naturels de taille arbitrairement
grande en utilisant des tableaux dont chaque case contient un entier naturel compris entre 0 et 999999999
(109-1). Ainsi, avec un tableau de 8 cases, on pourra représenter des nombres de 0 à 1098 = 1072. L'entier
1 sera représenté par le tableau 0 0 0 0 0 0 0 1 et l'entier 1234567890 sera représenté par le tableau
0 0 0 0 0 0 1 234567890 .
a) Écrire le programme qui définit un tel tableau, l'initialise avec 0 dans chaque case, puis stocke
dans le tableau l'entier lu sur la ligne de commande en le découpant correctement puis affiche le
tableau. Par exemple pour l'entier 1234567890123456 :
0 0 0 0 0 0 1234567 890123456
b) Modifier le programme pour qu'il lise deux entiers, les stocke dans deux tableaux distincts, réalise
la somme des deux grands entiers puis affiche le résultat.
c) Ajouter la multiplication en utilisant l'addition définie ci-dessus.
d) La multiplication est très contrainte par la taille des grands entiers, déterminez une condition sur
les deux grands entiers à multiplier pour que la multiplication soit correcte.
e) L'entier lu était jusqu'ici limité par la capacité de représentation des entiers,
modifier le programme pour qu'il lise les entiers sous forme de chaînes de caractère
et fasse le découpage avant la conversion en entier. Par exemple : la chaîne
"123456789012345612345678901234561234567890123456" devient la suite de chaînes "23",
"456789012", "345612345", "678901234", "561234567", "1890123456" puis le tableau
0 0 23 456789012 345612345 678901234 561234567 1890123456 . Pour obtenir une sous-
chaîne d'une chaîne de caractère, se référer à la documentation selon le langage.

Exercice 11 : Écrire un programme permettant de faire les manipulation décrites ci-dessous :


1. Définir les fonctions et procédures prenant en paramètre un tableau de caractères et :
a) Affiche chaque chiffre séparé par un caractère '.'. Par exemple pour le texte "1234", cela
affiche : 1.2.3.4.
b) En comparant les caractères contenus dans le texte avec les chiffres, calculer la somme des
chiffres du nombre puis l'afficher. Par exemple pour le texte "236", cela affiche 11.
c) En utilisant les éléments des points ci-dessus, convertir le texte en entier par addition des
puissances de 10 successives.
d) De façon inverse, prendre un entier et réaliser son affichage sans utiliser la conversion en
chaîne de caractère.
1. Mêmes questions que précédemment mais en prenant comme texte la représentation hexadécimale
et non décimale des entiers. Par exemple, le texte "3E2" sera converti en 994, et inversement.
2. Mêmes questions que précédemment mais en prenant comme texte la représentation binaire et non
décimale des entiers. Par exemple, le texte "1111100010" sera converti en 994, et inversement.

Vous aimerez peut-être aussi